Dieser Beitrag stammt von Linuxfocus
von Guido Socher Über den Autor: Guido ist ein langjähriger Linuxfan und seit kurzem Editor von LinuxFocus. Momemtan ist er außerdem sehr damit beschäftigt, sein Haus zu renovieren und Salat und anderes Zeug im Garten anzupflanzen. Inhalt: |
Zusammenfassung:
Dies ist der Beginn einer Reihe von Artikeln über Perl. Du brauchst keine besonderen Vorkenntnisse, um diesen Artikel verstehen zu können. Kenntnisse in einer prozeduralen Programmiersprache (wie C oder Pascal) erleichtern es aber, einen Einstieg in Perl zu finden.
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. 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.
Im Verlauf dieser Reihe wirst du allmählich Perl lernen. Aber du kannst schon jetzt dieses kleine Referenzhandbuch runterladen(perlref-5.004.1.tar.gz) . Die beigefügte README Datei erklärt, wie man das ganze als kleines Büchlein drucken kann.
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.
Perl Teil II >>
Dem LinuxFocus-Team schreiben © Guido Socher LinuxFocus 1999 |
Authoren und Übersetzer:
|
1999-10-12, generated by lfparser version 0.7