Programming Republic of Perl LogoPerl

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 eGrafisch doolhofen paar uitgebreidere voorbeeldprogramma's en meer informatie, kijk op de pagina's:

Een paar simpele voorbeelden

OK, hoe ziet het er dan uit? Een paar simpele voorbeelden (kan je zelf direct proberen, bijvoorbeeld met de Perl Interpreter):

  • Druk de getallen van 1 tot 10 af:

    for $x (1..10) { print $x; }

    Het kan eigenlijk zelfs nog simpeler:

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.

Powered by Perl LogoWat zijn de sterke punten van Perl?

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.

Waar is het te krijgen

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

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

Debugger en IDE voor Perl

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.

Frontpage Learning PerlGoede Boeken en Informatie

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:

Er zijn in Nederland ook een aantal Perl gebruikersgroepen. Kan je ongetwijfeld ook terecht met vragen! Gekoppeld er aan ook de 'Stichting Perl Promotie Nederland'.