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...
|