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:

Perl Teil I

[Illustration]

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.



 

Was ist Perl?

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.

 

Ein einfaches Programm

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.

 

Dokumentation

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:
en -> -- Guido Socher
en -> de Katja Socher

1999-10-12, generated by lfparser version 0.7