perl - eine Einführung


Wie man mit der bash (oder einer ähnlichen shell) nützliche scripts schreiben kann haben wir ja bereits gelernt. Für typische Systemverwaltungsaufgaben braucht man meisten noch tools wie cut, awk, sed, ... in den scripts. Shell scripts verlassen sich generell sehr stark auf viele kleine tools die in einem script verknüpft werden. Grössere scripts werden dadruch etwas fragil und auch langsam.

Für etwas grössere Aufgaben empfiehlt sich daher eher die Verwendung einer Scriptsprache wie Perl. Perl ist heute standard auf jedem Unix (und auch für Mac, Windows und viele andere Systeme erhältlich) und ermöglicht es portable scripts zu schreiben.

Bevor wir also sed oder awk überhaupt behandeln, möchte ich in die CD einen kurzen Perl-Kurs einfliessen lassen. Perl ist in den meisten Fällen ohnehin eine bessere Wahl als ein shell script unter Verwendung diverser awk/sed-Aufrufe.

Perl wurde von Larry Wall ursprünglich als sed/awk/sh Ersatz +entwickelt, ist aber inzwischen eine ausgewachsene Programmiersprache. Perl hat das Motto: "make easy things easy and hard things possible": d.h. man kann relativ schnell einfache Sachen mit Perl verwirklichen aber notfalls auch schwierige... weiteres Motto von Perl "there are more then one way to do it in perl". Perl will dem Anwender also keine Programmierideologie aufzwingen sondern man kann Perl in verschiedenster Weise verwenden um seine Probleme zu lösen (ein daraus resultierendes Problem ist: es ist unter Umständen schwierig den Perl code von anderen zu lesen und zu verstehen wenn diese einen anderen "Stil" verwenden.... Obfuscation).

Einer der Vorteile von Perl ist dass man sehr leicht mit verschiedenen Systemen "sprechen" kann. Vom Webserver bis zur Datenbank, von der numerischen Mathematik bis zur Bioinformatik, etc..etc.. für alles mögliche gibt es schon Perl Module die man verwenden kann. Perl ist somit ein idealer "Kleister" zur Verbindung solcher Systeme.. sozusagen: "the duct tape of the internet".

Soweit zur Theorie: schauen wir uns ein kleines Beispielscript an: Wir schreiben mit einem Texteditor ein file namens "test.pl":
#!/usr/bin/perl -w
print "hello world";
das #! kennen wir schon von shell scripts. /usr/bin/perl ist hier das Programm das unser script abarbeitet, eben Perl. Der -w switch ist nicht unbedingt notwendidg aber von Vorteil: damit bekommt man extra Warnungen falls man einen Fehler hat.

Wir speichern das file ab und machen es zu einem ausführbaren Script:
chmod ugo+rx test.pl
und dann können wir es aufrufen.
./test.pl
nicht sehr aufrgend... das print kommando gibt den string aus. Interessant eventüll das . das zeichen bedeutet "newline" und sorgt dafür dass nach dem hello world eine neü Zeile begonnen wird.
#!/usr/bin/perl -w
$name="Andrea Muster" ;
$alter=25;

print "der Wert der Variablen name ist " . $name . "\n";
print "der Wert der Variablen alter ist ", $alter, "\n";
print "abc $name $alter"\n;

# das hier ist Kommentar. (fängt mit # an)
#
# zuerst werden den 2 Variablen $name und $alter Werte zugewiesen. der einen
# eine Zeichenkette und der anderen ein Zahlenwert 25 die Werte
# werden dann mit print auf 3 verschiedne Arten ausgegeben
# 
# beim ersten print wird mit Hilfe der Operation . (Punkt)
# die Zeichenkette $name mit anderen Zeichenketten verknüpft
# beim zweiten werden dem print mehrere durch , getrennte Argumente
# angegeben die es alle nacheinander ausdrucht
# im dritten Fall wird $name und $alter direkt in den string eingesetzt
# und danach mit print ausgegeben
#
# die einzelnen Perl statements sind durch ; (strichpunkt)
# getrennt.






soweit unsere ersten 2 Perl Programme.



EXERCISES:
* schreibe ein Perl Programm das einen Text ausgibt.
* weise in Perl einer Variablen einen Wert zu und gibt die Variable mit print aus.



REFERENCES:

man perl

"Perl the first postmodern programminglanguage"
http://www.wall.org/~larry/pm.html
http://www.perl.com/pub/q/documentation