![[Foto van de Auteur]](../../common/images/Guido-S.gif) 
original in en Guido Socher
en to nl Floris Lambrechts
Guido is al lang een Linux fan en recentelijk is hij ook begonnen als leider van _LF_. Tegenwoordig houdt hij zich ook bezig met het renoveren van zijn huis en het planten van sla en andere dingen in zijn tuin.
![[Illustratie]](../../common/images/illustration114.gif) 
Perl is een scripttaal, oorspronkelijk ontwikkeld door Larry Wall. De
 broncode kan rechtstreeks "uitgevoerd" worden door middel van het
 eigenlijke perl programma. Dit is meestal te vinden in de directory /usr/bin/perl. 
 Perl gelijkt in vele opzichten op de klassieke Unix programma's awk en sed
 maar is tegelijk ook veel uitgebreider. Met perl kan je zelfs 
 objectgeörienteerd programmeren en grafische interfaces ontwerpen. 
 Perl kan gemakkelijk worden uitgebreid met extra mogelijkheden in de vorm
 van bibliotheken en het archief op 
 CPAN bevat er vele. Dit eerste artikel zal echter niet ingaan op
 moeilijke onderwerpen. In de plaats daarvan toon ik nu de grondbeginselen en
 ga ik later dieper op de dingen in.
Perl is een zeer nuttige scripttaal. Het is een universeel hulpmiddel voor iedereen die een beetje kan programmeren.
Bewaar het volgende
 programma onder de naam my1stprg en maak het dan uitvoerbaar met de
 opdracht 
chmod 755 my1stprg .
Voer het uit en kijk wat er
 gebeurt.
| #!/usr/bin/perl -w print "Wat is uw naam?\n"; $naam=<STDIN>; #verwijder het newline karakter: chomp($naam); $lang=length($naam); print "\nHallo $naam! Uw naam is $lang karakters lang\n"; | 
Bekijken we even de code. De eerste regel is geen commentaar. Dit soort
 regels, die beginnen met "#!" zijn typisch voor Unix scripts. Ze
 vertellen het besturingssysteem wat het moet doen met dit tekstbestand.
 Elke regel ná de eerste die begint met een #hekje# is een 
 commentaarregel (bijv. regel 4). We kunnen ook zien dat alle opdrachten
 afgesloten worden met een ;puntkomma;. Een variabele begint met een
 &dollarteken&. Perl variabelen kunnen strings (zinnen) bevatten, maar ook 
 gehele- en kommagetallen (integers en floats). De inhoud van de variabele 
 wordt automatisch omgezet naar het juiste type, afhankelijk van de context 
 waarin de variabele wordt gebruikt. De $-variabelen worden "scalar
 variables" genoemd. Perl kent ook arrays (beginnend met @ i.p.v. $) en
 hash tabellen (beginnend met % i.p.v. $). Deze soorten variabelen zullen in
 een later artikel worden besproken.
 De print functie op de tweede regel van ons script schrijft een regel tekst
 naar de standaard uitvoer (stdout). Het werkt hetzelfde als het echo commando
 in shell scripts en de variabelen worden vervangen door hun eigenlijke waarde
 als de regel omsloten is door "dubbele aanhalingstekens".
 Variabelen die staan tussen 'enkele aanhalingstekens' worden niet vervangen
 door hun waarde en een \backslash\ kan gebruikt worden om speciale tekens
 zoals het dollarteken of een aanhalingsteken te gebruiken binnen de
 aanhalingstekens. Hier is een voorbeeld:
| #!/usr/bin/perl -w $naam="jan"; print "1 $naam\n"; print '2 ', $naam , "\n"; print '3 ', '$naam',"\n"; print "4 \"$naam\"\n"; print "5 \$naam\n"; print "6 \"\$naam\"\n"; | 
Dit geeft:
| 1 jan 2 jan 3 $naam 4 "jan" 5 $naam 6 "$naam" | 
Terug naar ons eerste eenvoudige programma. De regel $naam=<STDIN>; geeft aan dat de gebruiker iets kan intypen totdat hij op enter drukt. Nadien bevat de variabele $naam datgene wat de gebruiker heeft ingevoerd (ook het enterteken of de newline op het eind). De opdracht chomp($naam); verwijdert dit newline karakter aan het eind van $naam. Tenslotte telt de length functie het aantal karakters in $naam.
Spijtig genoeg bevat ons programma een fout (bug). Wat gebeurt er als je
 een tab of spatie typt na je naam? Het wordt gewoon meegeteld als een
 letter. Hoe lossen we dat op?
We moeten een zoek-en-vervang functie vinden om spaties te zoeken en te
 verwijderen. Perl is gelukkig zeer goed uitgerust om text strings te 
 manipuleren. [ \t] is een reguliere expressie die gelijk is aan een
 spatie of een tab. In perl kunnen we dit ook korter schrijven als \s.
 (Meer over reguliere expressies kan je
 hier vinden). Het perl
 vervang-commando kan omgaan met reguliere expressies en heeft de syntax:
 $naam=~ s/regexp/vervanging/g; Als we het 'vervang' veld leeg laten dan
 worden alle stukken tekst die overeenkomen met de reguliere expressie
 vervangen door niks; ze worden dus verwijderd.
 Nu ziet ons programma er zo uit:
| #!/usr/bin/perl -w print "Wat is uw naam?\n"; $naam=<STDIN>; #verwijder het newline karakter: chomp($naam); print "\nHallo $naam!"; #verwijder de spaties uit de string: $naam=~s/\s//g; $lang=length($naam); print " Uw naam is $lang karakters lang\n"; | 
Dit programma is niet echt nuttig omdat het geen 'control statements' (lussen en if-statements) heeft, maar het geeft een beeld van de basis van Perl. Deze serie gaat door en binnenkort zullen we verdergaan met meer complexe programma's.
Je kan ook "man perl" en "man perlfunc" proberen om te kijken welke functies er zoal zijn. Dit is echter meer bedoeld als referentie. Om Perl te leren moet je een cursus als deze volgen of een boek lezen zoals "Learning Perl" van O'Reilly.