op mijn site
Updated: 27-04-2008 Kees Moerman
|
Perl
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 e en paar uitgebreidere voorbeeldprogramma's en meer
informatie, kijk op de pagina's:
OK, hoe ziet het er dan uit? Een paar simpele voorbeelden (kan je zelf
direct proberen, bijvoorbeeld met de Perl
Interpreter):
print (1..10);
- Haal mijn webpagina op (dus de HTML file) en type deze file op het
scherm: hier is het hele (2-regelige) programma:
use LWP::Simple; # de bibliotheek voor simpel internet
access
print get('http://www.keesmoerman.nl/index.html
');
- 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.
Wat mij aantrekt in Perl:
- 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.
Heel veel documentatie is gewoon op het web beschikbaar, zoals:
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
- Perl 5 Desktop
Reference, Johan Vromans, O'Reilly, ISBN 1-56592-187-9
- Learning Perl/Tk,
Graphical User Interfaces with Perl, .......
|