De programmeertaal Perl. Waarom? Het is een combinatietang
onder de programmeertalen (nee, niet zo van: als je alleen een hamer hebt lijkt
alles op een spijker), voor wie het wat zegt met de mogelijkheden van
sed, awk en shell in zich. Oorspronkelijk sterk in
tekstverwerking, bijvoorbeeld om snel informatie uit tekst te filteren en te
formatteren: Practical Extracting and
Reporting Language, of zo. Nu (door de vele
bibliotheekmodules) gebruikt voor alles en nog wat, als systeembeheer,
scripting taal, en voor veel web-gerelateerde zaken. Zie overigens ook mijn
pagina over: wat is de 'beste'
programmeertaal.
Perl draait op alle serieuze operating systems, dus ook onder Linux
en Windows. Door gebruik van Tk als user interface kan je zelfs programma's met
grafische user interfaces maken die op alle platforms draaien.
Wat doe ik er zoal mee? Webpagina's voorzien van de navigatiebalken (zoals
deze paginas) inclusief de graphic knoppen, data filteren, spelletjes maken, en
als hulp voor Povray, een ray-tracer programma voor het maken van
3D-afbeeldingen.
Voor een paar uitgebreidere voorbeeldprogramma's en meer informatie,
kijk op de pagina's:
Nu wat krachtiger; stel je hebt een editor, maar je mist een aantal
commando's. Hier een stukje specifiek voor Windows: als de editor een
DDE-mogelijkheid (of OLE, of ....) heeft, kan Perl worden gebruikt om de editor
uit te breiden. Een voorbeeld: het onderstaande script geeft de mogelijkheid
een expressie in je editor-tekst te selecteren (bijvoorbeeld '1+1'), vervolgens
klik je op het Perl script in explorer, et voila, de '1+1'
wordt vervangen door '2' !!!!
Normaal zet ik commentaar achter de regels, maar doordat je op web-pages
beperkte ruimte hebt: hier het commentaar voor de regels. Kan tenslotte ook.
Het voorbeeld is voor PFE: Programmer's File Editor, welke goede
DDE-mogelijkheden heeft.
# indicate the use of the PFE module (download here) use Win32::Editor::PFE;
# and the Windows Clip Board access module use Win32::Clipboard;
# get a connection to PFE, keep object in $pfe variable $pfe = new Win32::Editor::PFE;
# get connection to clipboard object $clip = Win32::Clipboard();
# give PFE command to place selected text on clipboard $pfe->EditCopy();
# retrieve selected text, evaluate expression, place back to clipboard $clip->Set(eval($clip->Get()));
# and paste back into the file by PFE $pfe->EditPaste();
Klaar! Normaal zou je hier nog wat meer error checking doen (b.v. testen of
er wel een tekst is geselecteerd, kijken of er bij evaluatie fouten optreden
(delen door 0), en zo voort. Ik maak nog wel eens een langere lijst
voorbeelden.
Heel veel modules (libraries) voor beschikbaar, bijvoorbeeld voor internet
access, grafische functies, user interface (b.v. Tk, of native Windows
interfaces), Windows OLE/DDE, Windows Registry access, .....
Werkt op UNIX en Windows
Is geïnterpreteerd, dus ook goed voor one-liners van de command line
Kent heel krachtige constructies, bijvoorbeeld voor "pattern matching"
(patroonherkenning in strings, gebaseerd op reguliere expressies), en symbol
tables (hashes): indexeer 'arrays' met strings, als in bijvoorbeeld $dieren{"aap"} = "zoogdier";
Je kan, maar hoeft niet, object-georiënteerd werken
Stelt zich in dienst van de programmeur, niet omgedraaid.
Heeft heel veel gebruikers, die niet te beroerd zijn om anderen weer verder
te helpen
Heeft goede documentatie, ook gewoon als papieren boeken in de boekhandel
(bijvoorbeeld goede serie van O'Reilly, zie ook verderop).
Wil natuurlijk niet zeggen dat Perl de beste oplossing voor elk probleem is
(als je echt voor snelheid moet gaan kan bijvoorbeeld C een betere keus zijn),
maar ik gebruik het toch heel wat.
Op de meeste Linux systemen is Perl al aanwezig. Type maar
eens 'perl -v' (of 'perl -V' voor meer info) in een
console window, is Perl aanwezig dat wordt het versienummer en zo
afgedrukt.
Voor Windows is de ' ActiveState' versie de meest
gebruikte. Gratis!!!! Inclusief heel veel support modules (een soort
voorvertaalde libraries), automatisch te installeren via de Perl Package
Manager PPM.
Voor andere platforms: kijk eens op http://www.perl.org als beginpunt. Zie ook mijn
Perl installatie-pagina.
Ik heb zelf (naast de al uitgebreide set standaard meegeleverde modules, als
de eerder gebruikte internet access modules) onder andere de volgende
uitbreidingen gedownload:
Tk, de grafische user interface voor UNIX en Windows (bij
ActiveState opgehaald, maar zit tegenwoordig standaard in de distributie)
Gd, grafische library om makkelijk plaatjes, buttons etc. vanuit een
script te kunnen maken (ook bij ActiveState opgehaald). De knoppen op de
navigatiebalk links op deze pagina worden bijvoorbeeld hiermee automatisch
gemaakt. GD.pm is een implementatie van Thomas Boutell's gd
graphics library. Meer details op mijn Perl
installatie-pagina.
DDE, voor het opzetten met links naar andere Windows
programma's (OLE links zitten standaard in ActiveState). Voor ActiveState Perl
5.8 DDE kijk hier: Win32::DDE
module.
G, zorgt er voor dat vanuit DOS de argumenten goed worden
doorgegeven (DOS heeft zo z'n eigen methodes om met spaties, quotes en komma's
om te gaan), van Jenda's pages.
Win32::GuiTest, om
andere applicaties te besturen (scripting, kan toetsaanslagen naar andere apps
sturen en zo). Versie 1.50.1 is nog voor Perl 5.6, hoger is voor Perl 5.8.
PerlMagick,
een onderdeel van het beeldbewerkingspakket ImageMagick. Heel geschikt
voor automatische bewerking van meerdere foto's in
een keer (batch processing). Maar: let op, je moet een versie van ImageMagick
hebben die past bij je versie van Perl (in mijn geval
ImageMagick-6.3.7-0-Q16-windows-dll.exe voor ActiveState Perl
build 822).
ExifTool,
een pakket om EXIF informatie etc in foto's op te halen en te bewerken.
Modules kan je vinden bij ActiveState in het geval van Windows, of bij
CPAN (Comprehensive
Perl Archive Network) voor andere platforms als Lunix; ze hebben ook een
speciale zoekmachine op search.cpan.org.
En ik heb enkele modules voor eigen gebruik gemaakt, later (ooit) hier meer
over.
Voor het programmeren en debuggen in Perl onder Windows
zijn er goede windowed debug-interfaces en IDEs (Integrated Development
Environment) beschikbaar. Ik bedoel hier dus voor het
ontwikkelen van Perl programma's, niet voor het gebruik vanuit
Perl voor de programma's die je met Perl hebt gemaakt (waarvoor ik
Tk aanraad, kijk eerder op deze pagina). Met syntax colouring,
foutcontrole, handige debug-hulpjes, etc. Geeft de mogelijkheid om stap voor
stap door programma's te gaan, variabelen te bekijken, etc. Geeft de
mogelijkheid om stap voor stap door programma's te gaan, variabelen te
bekijken, etc. Voor beide IDE's moet je wel Perl geïnstalleerd hebben.
Voor Windows ME, 98 etc: Kijk eens op de Open Perl IDE pages. Met syntax
colouring, foutcontrole, handige debug-hulpjes, etc. Zeer aan te bevelen.
Engelstalig. Let op: voor Perl 5.8 en 5.10 is er een patch nodig, zie mijn
perl
installatiepagina.
Vanaf Windows XP, en ook gesupport voor Linux en MAC, is er ook de
Eclipse Perl IDE: EPIC heel goed,
zie mijn perl
installatiepagina.. Uitgebreider (maar ook wat complexer bij installatie en
in gebruik) dan de Open Perl IDE.
Vooral O'Reilly heeft een
serie goede boeken (verkrijgbaar in de meeste grotere boekhandels), zoals:
Learning Perl in Win32
Systems, Randal L. Schwartz, Erik Olson & Tim Christiansen,
O'Reilly, ISBN 1-56592-324-3 (ook verkrijgbaar in een niet-Windows gebaseerde
versie, 'Learning Perl', ISBN 1-56592-284-0)
Mijn favoriet:
Advanced Perl Programming, Simon Cozens, ook van O'Reilly, ISBN
10: 0-596-00456-7 | ISBN 13: 9780596004569