|
Perl Interactief
Een van de handige dingen van Perl voor beginners is het feit dat Perl een
interpreter is...
Dit wil zeggen dat je een programma niet eerst hoeft te compileren, maar
dat Perl het direct uit kan voeren. Het geeft ook de mogelijkheid om zo Perl
stukjes Perl uit te laten voeren, bijvoorbeeld om commando's uit te
proberen. Je typt een regel in, Perl voert het uit en geeft het
antwoord. Dat zou er bijvoorbeeld zo uit kunnen zien (waarbij de dikgedrukte
tekst door mij is ingetypt):
Ps: deze programma'tjes werken zowel onder Windows als onder Linux
Perl> 1+1
eval returned: 2
Perl> @a =
(1..5);
eval returned: 1, 2, 3, 4, 5
Perl> @a[1]
Scalar value @a[1] better written as $a[1] at (eval 3) line 1, <>
line 3.
eval returned: 2
Perl> $a[1]
eval returned: 2
Perl> quit
Als voorbeeld: Zie de foutmelding...: 'ik was even vergeten' dat een array
element niet met een '@' maar met een '$' begint... Maar: je kan ook veel
complexere constructies testen, inclusief laden van complete modules.
Eigenlijk heb je hier gewoon Perl aan je voeten liggen.
Ik heb bovenliggend voorbeeld dankzij een klein interpreter-programma'tje
genaamd 'interpret.pl' dat ik ooit eens geschreven heb, terwijl
ik zelf Perl aan het leren was. Omdat ik denk dat het ook voor anderen nuttig
kan zijn zal ik het hier eens beknopt uitleggen.
Hier is de kern van het programma (eigenlijk haast zowat het hele
programma, afgezien van het openen en sluiten van de logfile waarin ik de
ingetypte commando's bewaar, handig om er later een script van te maken). Het
hele programma draait om het 'eval' commando, dat een nieuwe
regel Perl uitvoert. Waar de regel vandaan komt doet er voor
'eval' niet toe, is in dit geval van de 'standaard input'
(normaal het keyboard):
while(<>)
# zolang er regels binnenkomen:
{
# (vanaf STDIN: keyboard)
last if(/^quit/i); # herken 'quit': stopt
evt. de interpret loop
s/^\?/print /; # vertaal '?' aan
begin regel naar 'print'
while (/\\$/) # '\' aan
einde regel ('$') betekend dat
{
# commando doorloopt op de volgende regel:
s/\\$//; # '\'
er af hakken
$_ .= <>; # en
volgende regel er aan plakken
}
@result = eval; # evalueer het
ingetypte commando
print " eval returned: " if !/^print/;
print @result if !/^print/; # alleen afdrukken als niet al
gedaan
print $@ if ($@); # druk ook
eventuele foutmeldingen af
print "\nPerl> "; # print de 'Perl>'
prompt, en opnieuw
}
Het volledige script zorgt er voor dat je makkelijk met Perl kunt spelen,
en zo snel zaken kunt uitproberen. De volledige file kan je downloaden als
zip file interpret.pl (2
Kbyte). Is standaard Perl, werkt dus op elke Perl5 omgeving (Windows, Linux,
...). Onder Windows kan je vermoedelijk deze file direct dubbelklikken, mits
de .pl extensie netjes met Perl geassocieerd is. Je kunt ook direct een
snelkoppeling (shortcut) maken naar het script, met (bij mijn installatie:
heb het script opgeslagen in de directory Progs in Perl) als doel
C:\Perl\Progs\interpret.pl Lukt dit niet, dan is het het
makkelijkste om een batch file (Windows) te maken ('interpret.bat') met als
inhoud:
perl -w
<pad_naar_script>/interpret.pl
waarbij <pad_naar_script> moet worden
vervangen door het pad waar 'interpret.pl' is opgeslagen. Maak een short-cut
naar deze batch-file, en met een dubbel-klik heb je een Perl-prompt voor je
neus!
Overigens: Perl heeft altijd de mogelijkheid om van bijvoorbeeld een DOS
prompt ook direct commando's uit te voeren, door middel van de
-e optie. Probeer bijvoorbeeld maar eens: perl -e
"print 1+1" Andere nuttige opties zijn bijvoorbeeld
-p en -n (zie de documentatie: voeren
commando's uit op regels in een file).
Perl met Tk grafische user interface
Uiteraard kan het
mooier, door er een grafische interface rond te hangen met behulp van Tk.
Hiermee heb je een mooi edit-window voor de commando's, een window voor de
output, een voor de foutmeldingen, en nog wat handige knoppen, als 'load' en
'save' voor de gemaakte programma's. Wil je weten hoe het script werkt, kijk
dan eerst naar het 'Turtle'
voorbeeld, TkInterpret is op dezelfde structuur gebaseerd.
Wil je het gebruiken, download dan de zip file met TkInterpret.pl (2.3
Kbyte). Gebruik is vergelijkbaar met interpret.pl, maar met een mooi
multi-line edit window. Om te voorkomen dat je op de achtergrond een DOS-box
ziet verschijnen kan je dit niet met perl.exe maar met wperl.exe starten: de
snelkoppeling (shortcut) ziet er dan als volgt uit:
C:\Perl\bin\wperl.exe C:\Perl\Progs\TkInterpret.pl
Voor wat meer gevorderden: Het leuke is dat je hiermee ook eenvoudig met
Tk kunt experimenteren. Zo kan je zelf knoppen en windows toevoegen, door ze
in het TkInterpret framework toe te voegen. In de source kan je de naam van
bijvoorbeeld het top-window vinden, en hier extra windows bij hangen. Ook
voor het testen van andere Tk features is dit heel makkelijk (bijvoorbeeld
spelen met de voor- en achtergrond-kleur). Om bijvoorbeeld de achtergrond van
de error log area rood te maken:
$error->configure(-background => 'red')
Leuk, he? Veel plezier er mee...
|