Toon posts:

Perl geklooi met 'use Tk'

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heuj mensen!

Ik ben voor de grap eens begonnen met scripting/programmeren in perl...
Het werkt, tot op zekere hoogte:
(overgenomen uit Linux Magazine, zonder de getallen ;) )

1 # hier staat perl (duh...)
2 #!/usr/bin/perl
3
4 use Tk;
5 $top = MainWindow->new();
6 $top->title("mijn zoveelste perl progje");
7
8 $label = $top->Label(text => 'hallo');
9 $label->pack();
10 MainLoop();

Het vreemde is, dat regel 1 t/m 4 alleen wel werken, maar zoals het hier staat, begint perl te mekkeren dat ie 'use' niet kent, etc...What 2 do?
Wordt hier echt helemaal maf van ;(

Verwijderd

e-forze: Ik ben voor de grap eens begonnen met scripting/programmeren in perl...
Heel goed. :)
Het werkt, tot op zekere hoogte. [perl] Het vreemde is, dat regel 1 t/m 4 alleen wel werken, maar zoals het hier staat, begint perl te mekkeren dat ie 'use' niet kent, etc...What 2 do?
Hij begint niet te mekkeren dat hij use niet kent, hij mekkert dat hij de Tk module niet kan vinden. Dus downloaden (van CPAN) en installeren, zie documentatie bij Perl. :)

Verwijderd

Topicstarter
Op maandag 01 oktober 2001 08:29 schreef Arien het volgende:

Hij begint niet te mekkeren dat hij use niet kent, hij mekkert dat hij de Tk module niet kan vinden. Dus downloaden (van CPAN) en installeren, zie documentatie bij Perl. :)
normaal gesproken wel, maar het vreemde is dat regel 1 t/m 4 wel werken als het een programma is met alleen die 4 regels...in dit scriptje werkt het niet... :?

Verwijderd

Welke foutmelding krijg je precies? :?

Verwijderd

Topicstarter
euh...
iets in de richting van unknown object ofzo...
Bij MainWindow->new();

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Zeker weten dat je She(weengdiggiboom)Bang regel wel de eerste regel is?

Oftewel, staat regel 1 van wat je hier post ook in je daadwerkelijke bestand?

Verwijderd

e-forze: Iets in de richting van unknown object ofzo.
Zet eens een -w aan het eind de tweede regel:
#!/usr/bin/perl -w

Zeg hij niet iets van Cannot locate Tk.pm in @INC (bla bla bla)? :?

Verwijderd

2: Oftewel, staat regel 1 van wat je hier post ook in je daadwerkelijke bestand?
Belangrijker: Is het de eerste regel?

Verwijderd

Topicstarter
jup...
Ik heb ken 3 talen (pascal,c++ en java) en nauwkeurigheid is er op school ingeramd met zo'n 'kop-van-jut-hamer' ;)
Dus daar zit de fout niet in...

Verwijderd

e-forze: ... nauwkeurigheid is er op school ingeramd met zo'n 'kop-van-jut-hamer' ;)
Plak dan eens nauwkeurig de foutmelding... :)

Verwijderd

Topicstarter
Op maandag 01 oktober 2001 09:22 schreef Arien het volgende:

[..]

Zet eens een -w aan het eind de tweede regel:
#!/usr/bin/perl -w

Zeg hij niet iets van Cannot locate Tk.pm in @INC (bla bla bla)? :?
Ik zal het vanavond eens proberen, ben nu aan het werk...
De perl -e 'use Tk' werkt overigens prima...
ik gebruik btw SuSE...bekend probleem?

Verwijderd

Topicstarter
Op maandag 01 oktober 2001 09:31 schreef Arien het volgende:

[..]

Plak dan eens nauwkeurig de foutmelding... :)
kon ik het maar...zit nu niet thuis en ik heb via het werk alleen maar poort 80 toegang...maar om dan ook nog es met je 28k8 ingebeld te zijn overdag... ;)

Verwijderd

e-forze: Ik gebruik btw SuSE...bekend probleem?
Ja, mbravenboer heeft daar ook al last van. :P
</onzin>

Draai zelf iha {Free,Open}BSD en Slackware, maar lijkt me sterk dat hiervoor uitmaakt. :)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 01:14

Janoz

Moderator Devschuur®

!litemod

Die #!.... regel moet toch altijd de eerste regel zijn, en niet zoals bij jou de tweede?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
komt idd wel veel voor...hmm...
Maar eigenlijk is het commentaar he?

Verwijderd

e-forze: Maar eigenlijk is het commentaar he?
Het is commentaar maar de shell kijkt er naar om te bepalen hoe het script te runnen.

Verwijderd

Topicstarter
jup...
't is net zoals het #include van C he?

Verwijderd

e-forze: 't is net zoals het #include van C he?
:D Eehmm... ja, maar dan anders. (Nee dus.)

Op het moment dat de shell het script opent kijkt hij naar de eerste paar bytes om te bepalen hoe het uitgevoerd moet worden (dus die eerste paar bytes moeten #! zijn).
Voor Perl (dat daarna dat script voor zijn kiezen krijgt) is die eerste regel commentaar dus "onzichtbaar".

</korte samenvatting>

  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Op maandag 01 oktober 2001 09:27 schreef Arien het volgende:

[..]

Belangrijker: Is het de eerste regel?
Ja uh, we bedoelen hetzelfde :) Als die regel "1 # hier staat perl (duh...)" er niet in staat, dan is de shebang de eerste, want de shebang is altijd de eerste, anders is het geen shebang, dan is het gewoon een regel met onzin, eh, dus :)

  • RvdH
  • Registratie: Juni 1999
  • Laatst online: 28-07 15:42

RvdH

Uitvinder van RickRAID

code:
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl -w

use Tk;
$top = MainWindow->new();
$top->title("mijn zoveelste perl progje");

$label = $top->Label(text => 'hallo');
$label->pack();
MainLoop();

Werkt hier prima hoor.

Krijg je niet deze foutmelding?
tainted at /usr/local/lib/perl5/site_perl/5.6.1/i686-linux/Tk/MainWindow.pm line 55.
MainWindow->new() at ./test.pl line 4
Zo ja, dan moet je de -T achter #!/usr/bin/perl -wT weghalen..

Verwijderd

Topicstarter
Okeej!
het was idd die comment regel bovenaan!
Dus zover werkt het, maar hoe krijg ik nou een opdracht in een textbox?

het is nu:
code:
1
$label = $top->Label(text => 'hallo')

maar hoe krijg ik nu bijvoorbeeld de naam van de user die het progje start op de plaats waar nu 'hallo' staat?
(ik wil een soort 'persoonlijke' handleiding voor m'n vriendin maken, brieven tikken kan ze wel, nu nog inetten ;) )

Verwijderd

e-forze: Hoe krijg ik nu bijvoorbeeld de naam van de user die het progje start op de plaats waar nu 'hallo' staat?
Ehmm...
code:
1
2
$user = ...; # code om gebruiker te bepalen
$label = $top->Label(text => $user);

Welke OS?

Verwijderd

Topicstarter
Dat had ik dus ook al gedaan...maar dan flitst m'n progje over het scherm...krijg de uitvoer niet ;'(
zelfs het $perl -e of exec cmd= werkt niet...

Het is btw SuSE linux 7.2

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Ik heb trouwens je topictitel ietsje duidelijker gemaakt ;)

Verwijderd

Topicstarter
Op dinsdag 02 oktober 2001 08:21 schreef Arien het volgende:
code:
1
2
$user = ...; # code om gebruiker te bepalen
$label = $top->Label(text => $user);

Welke OS?
:z sjorrie...niet gezien....
dus
code:
1
2
$user = 'hier komt mijn code'; # commentaar (netjes ;) )
$label = $top->Label(text => $user);

geniaal ;)
thnx!

Verwijderd

Topicstarter
Op dinsdag 02 oktober 2001 09:18 schreef ACM het volgende:
Ik heb trouwens je topictitel ietsje duidelijker gemaakt ;)
Keej, thnx!
u R right, perl is idd wel 'n b-tje anders dan perl/Tk.
lachen trouwens dat je door een kleine aanpassing in je code ook op de mac of op Windoze terecht kan!
Pagina: 1