original in en Guido Socher
en to de Katja Socher
Guido ist ein langjähriger Linuxfan und seit kurzem Editor von _LF_. Momemtan ist er außerdem sehr damit beschäftigt, sein Haus zu renovieren und Salat und anderes Zeug im Garten anzupflanzen.
Perl ist eine Scriptsprache, die ursprünglich von Larry Wall entwickelt wurde. Der Quellcode kann durch Perl direkt "ausgeführt" werden. Perl ist normalerweise in /usr/bin/perl installiert. In vielen Aspekten ist Perl den klassischen Unixprogrammen awk und sed sehr ähnlich, aber Perl hat von dort einen weiten Weg zurückgelegt. Inzwischen kann man mit Perl sogar objektorientiert programmieren und graphische Benutzeroberflächen designen. Perl kann sehr leicht in seinen Anwendungsmöglichkeiten durch Bibliotheken erweitert werden, wovon es im Perlarchiv CPAN viele gibt. Dieser erste Artikel wird sich jedoch nicht mit weiterführenden Themen beschäftigen. Stattdessen möchte ich dir einige Grundlagen erklären und die weiterführenden Themen in späteren Artikeln behandeln.
Perl ist eine sehr nützliche Scriptsprache. Es ist ein universelles Werkzeug für jeden, der über ein wenig Programmierkenntnisse verfügt.
Speichere das folgende
Programm unter dem Namen my1stprg und mache es dann mit dem Befehl
chmod 755 my1stprg
ausführbar. Laß das Programm laufen und schau
dir an,
was es macht.
#!/usr/bin/perl -w
print "What is your name?\n"; $name=<STDIN>; #remove the new-line character: chomp($name); $len=length($name); print "\nHello $name! Your name is $len characters long\n"; |
Schauen wir uns den Code an. Die erste Zeile ist kein Kommentar. Dieser
Zeilentyp, der mit "#!" anfängt, ist typisch für Unixscripte und sagt
dem Betriebssystem, was es mit der Textdatei tun soll. Jede andere Zeile nach der
ersten Zeile, die mit dem #-Zeichen anfängt, ist dagegen eine Kommentarzeile (siehe z.B.
Zeile 4). Wir können auch sehen, daß alle Befehle mit einem Semikolon
abgeschlossen werden. Eine Variable beginnt mit einem Dollar ($) Zeichen.
Perlvariablen können Zeichenketten (strings), Integer und Fließkommazahlen sein.
Die Daten werden automatisch in den richtigen Typ konvertiert, abhängig vom
Kontext, in dem eine Variable benutzt wird. Die $-Variablen werden
Skalarvariablen genannt. In Perl gibt es auch Felder (arrays) (sie beginnen mit
@ statt mit $) und hash
Tabellen (Datenbanktabellen)(sie beginnen mit % statt mit $). Diese Variablentypen werden in einem
späteren Artikel diskutiert.
Die print Funktion in der zweiten Zeile von unserem Programm weist stdout eine
Textzeichenkette zu. Der Befehl ist dem echo Befehl in Shell Scripten
ähnlich und die Variablen erhalten den Wert der Zeichenkette zugewiesen, wenn
diese in doppelte Anführungsstriche eingeschlossen wurden. Variablen innerhalb
von einfachen Anführungsstrichen bekommen keinen Wert zugewiesen und ein Backslash
kann dazu benutzt werden, Sonderzeichen, wie das Dollarzeichen oder
Anführungsstriche innerhalb von Anführungsstrichen, darzustellen. Hier ein
Beispiel:
#!/usr/bin/perl -w
$name="joe"; print "1 $name\n"; print '2 ', $name , "\n"; print '3 ', '$name',"\n"; print "4 \"$name\"\n"; print "5 \$name\n"; print "6 \"\$name\"\n"; |
Dies ergibt:
1 joe
2 joe 3 $name 4 "joe" 5 $name 6 "$name" |
Zurück zu unserem ersten einfachen Programm. Die Zeile $name=<STDIN>; fordert den Benutzer zur Eingabe auf und wartet bis er/sie die Returntaste gedrückt hat. Die Variable $name nach dieser Zeile speichert, was der Benutzer eingetippt hat, einschließlich dem beendenen newline Zeichen. Der Befehl chomp($name); entfernt dieses newline Zeichen von der Variablen $name. Schließlich zählt die length Funktion die Anzahl der Zeichen in $name.
Leider hat unser Programm einen Fehler. Was passiert, wenn du einen tab setzt
oder ein Leerzeichen nach deinem Namen eintippst? Es wird mitgezählt. Wie können
wir diesen Fehler beheben?
Was wir brauchen, ist eine Finde-und-Ersetze Funktion, die alle Leerzeichen aus
der Variablen name entfernt. Perl ist sehr gut im Manipulieren von
Textzeichenketten und bietet genau dies. [ \t] ist ein regulärer
Ausdruck, der nach Leerzeichen sucht und sie ersetzt. In Perl kann dies auch
abgekürzt als \s geschrieben werden.
(Mehr über reguläre Ausdrücke kannst du
hier lesen ). Der Perl-Substituierbefehl nimmt den regulären Ausdruck und
hat die Syntax: $name=~ s/regexp/replacement/g; Wenn wir die Ersetzzeichenkette
leer lassen, dann werden alle Zeichen, an denen der reguläre Ausdruck paßt, durch
nichts ersetzt.
Jetzt sieht unser Programm so aus:
#!/usr/bin/perl -w
print "What is your name?\n"; $name=<STDIN>; #remove the new-line character: chomp($name); print "\nHello $name!"; #remove spaces from the string: $name=~s/\s//g; $len=length($name); print " Your name is $len characters long\n"; |
Dies ist kein sehr nützliches Programm, da es keine Steuerungsanweisungen (Schleifen und if Anweisungen) besitzt, aber es vermittelt dir die grundlegende Idee. Diese Reihe wird fortgesetzt werden und dann kommen wir schon bald zu komplexeren Programmen.
Du kannst auch "man perl" und "man perlfunc" ausprobieren, um zu sehen, was es für Funktionen gibt. All dies ist jedoch eher nur Referenzmaterial und du solltest besser diesem Tutorial folgen oder ein Buch wie "Einführung in Perl" von O'Reilly lesen, um Perl zu lernen.