Perl 1

Perl 2

Perl 3

Perl 4

Perl 5

Perl 6

Zurück

Neue Serie

Einführung in PERL I

von Achim Schmidt

Perl ist eine moderne Skriptsprache, welche sich nicht zuletzt wegen seiner guten Eigenschaften bei der CGI Programmierung, immer größerer Beliebtheit erfreut. Diese Artikelserie soll einen Einblick in diese Sprache geben und den Einstieg in diese vielfälltige Sprache ermöglichen.

PERL ist eine Abkuerzung fuer Practical Extraction and Report Language und wurde von Larry Wall entwickelt. Ziel der Entwicklung war eine Sprache, welche sowohl die typischen Programmiermethoden wie Verzweigungen, Kontrollstrukturen und Schleifen enthaellt, als auch leistungsfaehige Recherche- und Ersetzungsfunktionen aufweist. Die so entstandene Sprache gleicht einer Mischung aus C, AWK und SED. Im Gegensatz zu C ist sie jedoch keine Compilersprache im herkoemmlichen Sinn. Die Programme liegen im Quelltext (gewoehnliche ASCII Datei) vor und werden unmittelbar vor der Ausfuehrung compiliert. Diese Ausfuehrungsart het den Vorteil, dass die Programme zum einen eine brauchbare Ausfuerhungsgeschwindigkeit haben, jedoch immernoch leicht editierbar und vor allem hochprotabel sind. Der Nachteil gegenueber einer reinen Compilersprache ist der Verlust von Ausfuehrungszeit, welche jedoch nicht bei allen Funktionen zu Buche schlaegt.

PERL selbst ist Public Domain Software und liegt auch im Sourcecode vor. Diesem Umstand ist auch die weite Verbreitung von PERL zu verdanken. Denn PERL gibt es mittlerweile fuer nahezu jedes Betriebssystem.

Der Klassiker: hello world

Fangen wir einmal mit einem klassischen Programmierbeispiel an und leiten von diesem dann den Grundaufbau eines PERL Programmes ab:

#!/usr/bin/perl
#############################################
##
##	Perlkurs Linuxmagazin Teil 1
##
##	1. Hello World
##
##

{

	print "Hello World \n";

 }

Aufbau des Programmes

Ein Perlprogramm hat in seiner ersten Zeile grundsaetzlich seinen Aufruf stehen, und zwar hinter einem Kommentarzeichen. Anhand dieser Zeile erkennt die ausfuehrende Shell, dass es sich um ein PERL Programm handelt>
#!/usr/bin/perl
Dies bedeutet, dass auf meinem Rechner das Programm PERL im Verzeichnis /usr/bin zu finden ist. Wichtig ist, dass der angegebene Pfad mit dem tatsaechlichen Pfad, in welchem PERL auf Ihrem System zu finden ist uebereinstimmen.

Das Doppelkreuz ( # ) ist uebrigens das Kommentarzeichen in PERL. Alles was hinter ihm steht wird bei der Programmausfuehrung nicht beachtet. Als naechstes faellt ein Programmblock auf, welcher in geschweifte Klammern ( {} ) eingeschlossen ist. Die Geschweiften Klammern sind die Blockbegrenzer in PERL. Sie umgeben sowohl Programmteile wie Haupt und Unterprogramme als auch Bloecke fuer Schleifen, Kontrollstrukturen u.s.w. .

Als reine Programmieranweisungen ist lediglich der print - Befehl implementiert. Was hinter der Printanweisung, eingeschlossen von Anfuehrungszeichen steht, wird auf der Standardausgabe ausgegeben. Das \n am Ende des Ausgabetextes bewirkt uebrigens einen Zeilenwechsel und Wagenruecklauf, so dass die naechste Ausgabe in der naechsten Zeile am linken Bildschirmrand beginnt.

Alles in allem Schreibt dieses erste Programm den Text "Hello World" auf den Monitor und beendet dann seinen Programmlauf

Desweiteren ist noch zu erwaehnen, dass in PERL jede Zeile mit einem Semikolon ( ; ) abgeschlossen wird und dass PERL Case Sensitiv ist, also Gross- und Kleinschreibung unterscheidet, auch in den Befehlswoertern.

Besonderheiten des print Befehles

Der print Befehl kennt im uebrigen zwei verschiedene Ausfuehrungsvarianten. Waehrend bei in Anfuehrungszeichen eingschlossenem Text Sonderzeichen interpretiert werden, werden diese ignoriert, wenn der Ausgabetext in einfache Hochkommata ( ' ) eingeschlossen ist (Beispielprogramm demo1-1a.pl).

Beispiel: demo1-1a.pl


#!/usr/bin/perl
#############################################
##
##	Perlkurs Linuxmagazin Teil 1
##
##	1. Hello World
##
##

{

	print "Hello World \n";
	print 'Hello World \n';
	print "\n\n";
} 
Dies produziert dann folgende Ausgabe:

Die erste Ausgabe, wird mit Interpretation des CRs ausgefuert, waehrend die zweite Ausgabezeile das Steuerzeichen als Textinterpetiert und mit ausgibt. Die dritte Ausgabezeile dient lediglich dazu, die Ausgabe leserlicher zu machen, in dem zwei Zeilenumbrueche ausgegeben werden.

Daneben kennt der print Befehl jedoch noch eine Menge weiterer Steuerzeichen. Folgende Tabelle zeigt die wohl wichtigsten:

	Steuerzeichen		Bedeutung
	\"					Anfuehrungszeichen
	\\					Backslash
	\n					newline
	\r					Return
	\f					form feed
	\t					Tabulator (horizontal)
	\v					Tabulator (vertikal)
	\b					Backspace
	\a					Beep
	\e					Escape
	\x41				Hexadezimaler Wert

Tastatureingaben und Variablen

Nun ist es natuerlich recht sinnlos, nur Text ausgeben zu koennen. Eingaben werden in PERL einfach von der Standardeingabe entgegengenommen und einer Variablen zugewiesen.
Um dies zu verstehen muessen wir uns zunaechst einmal die Variablenbehandlung von PERL kurz ansehen. Vom Grundsatz her arbeitet PERL ohne vorherige Variablen deklaration und fester Typenzuweisung. PERL deklariert eine Variable im Moment der Zuweisung waehrend der Laufzeit automatisch mit dem richtigen Typ. Im Sourcecode beginnen Variablennamen grundsaetzlich mit einem Dollarzeichen ( $ ). PERL unterscheidet auch in den Variablennamen Gross- und Kleinschreibung.

Die Zuweisung eines Wertes in eine Variable geschieht durch das Gleichheitszeichen als Operator.

$zahl = 1 ;

weisst der Variablen $zahl nun den Wert 1 zu. Automatisch wird der numerische Inhalt der Variablen erkannt und der entsprechende Typ (numerik) gesetzt. Soll die Variable nun mit dem Wert 1 als String initialisiert werden, so braucht der Wert nur in Anfuerhungszeichen gesetzt zu werden.

Um nun einer Variablen einen von der Tastatur eingegeben Wert zuzuseisen, weisen wir Ihr einfach die Standardeingabe zu. Die Standardeingabe wird in PERL mit dem Operator umschrieben. Eine solche Zuweisung veranlasst PERL also einen Wert von der Standardeingabe einzulesen und der entsprechenden Variablen zuzuweisen. Dies geschieht auch im folgenden Beispielprogramm:

Beispiel: demo1-2.pl

#!/usr/bin/perl
#############################################
##
##	Perlkurs Linuxmagazin Teil 1
##
##  2. Einfache Ein- und Ausgabe	
##
##

{

	print "Bitte geben Sie Ihren Namen ein: ";
	$eingabe = ;
	chop ($eingabe);
	print "Sie heissen also: $eingabe \n";

 }

Sie sehen nun jedoch auch noch einen weiteren Befehl im Beispielprogramm, naemlich die Zeile chop ($eingabe). Der Befehl chop schneidet das letzte Zeichen eines Strings ab, in diesem Fall das zum Eingabeende gedrueckte Returnzeichen. Somit steht anschliessend noch der reine String in der Variablen.

In der weiteren Zeile wird dann der Eingabewert, welche ja in der Variablen $eingabe gespeichert wurde, umgeben von etwas ergaenzendem Text wieder ausgegeben.

Einfache mathematische Operationen

Selbstverstaendlich koennen in PERL, wie in jeder anderen Programmiersprache auch, mathematische Berechnungen durchgefuehrt werden. PERL haellt dazu die wichtigsten arithmetischen Operatoren bereit. Sie werden einfach in Variablenzuweisungen benutzt. Sehen wir uns dazu einmal folgendes Beispiel an (demo1-3.pl):


#!/usr/bin/perl
#############################################
##
##	Perlkurs Linuxmagazin Teil 1
##
##  3. Addition zweier Zahlen
##
##

{

	print "\n\nAddition zweier Zahlen \n";
	print "======================\n\n";
	print "1. Zahl: ";
	$zahl1 = ;
	chop ($zahl1);
	print "2. Zahl: ";
	$zahl2 = ;
	chop ($zahl2);
	$ergebnis = $zahl1 + $zahl2;
	print "\n $zahl1 + $zahl2 = $ergebnis \n\n";

}
Das Programm addiert zwei frei waehlbare Zahlen, welche ueber die Tastatur eingegeben werden koennen und gibt das Ergebnis nach dessen Berechnung ( $ergebnis = $zahl1 + $zahl2; ) auf der Standardausgabe, umgeben von etwas Begleittext wiederum aus (Bild 1.3)

Alle anderen arithmetischen Operationen funktionieren analog zu dem gezeigten Beispiel, es ist nur der jeweils gewuenschte Operator zu benutzen. PERL haellt dabei folgende arthmetische Operatoren bereit:

	Operator		Operation

	+				Addition
	-				Subtraktion
    *				Multiplikation
	/				Division
	%				Modulo
	**				Potenzbildung
	++				Inkrement (Erhoehen um 1)
	--				Dekrement (Verringern um 1)
Analog zur Programmiersprache C kann PERL Zahlen vor oder nach einer Ausfuerung erhoehen. Dies wird durch die Lokation des Operanden gekennzeichnet. So gibt die Anweisung 'print $i++' zuerst den aktuellen Wert von $i aus und inkementiert anschliessend, waehrend 'print --$i' $i zuerst dekrementiert und anschliessend ausgibt.

Beispiel: Programm zur einfachen Prozentrechnung (demo1-4.pl)

#!/usr/bin/perl
#############################################
##
##	Perlkurs Linuxmagazin Teil 1
##
##  4. Prozentrechung
##
##

{

	print "\n\nProzentrechung \n";
	print "==================\n\n";
	print "Berechnung des Prozentsatzes, bei bekannten Grundwert und Prozentwert\n\n";
	print "Grundwert: ";
	$g = ;
	chop ($g);
	print "Prozentwert: ";
	$pw = ;
	chop ($pw);
	$p = 100 / $g  * $pw;
	print "\nBei einem Wert von $g entspricht $pw einem Prozentsatz von: $p %\n";

}

In diesem Beispiel wurde zur Berechnung des Ergebnises eine mathematische Formel herangezogen. Wie sie sehen, ist auch eine solche Implementierung mittels PERL sehr einfach zu loesen. Damit sollten Sie nun in der Lage sein, auch komplexere arithmetische Operationen in PERL durchzufuehren.

Neben diesen Operatoren haellt PERL auch noch eine Reihe mathematischer funktionen bereit:

	Funktion		Aufgabe

	abs ($x)		Absolutwert von $x
	atan ($x,$y)	Acrustangeny von $x/$y
	cos ($x)		Cosinus von $x (im Bogenmass)
	log ($x)		Logarithmus naturalis von $x
	sin ($x)		Sinus von $x (im Bogenmass)
	sqrt ($x)		Quadratwurzel von $x

Diese Funktionen werden, ebso wie die arithmetischen Opreatoren einfach innerhalb einer Wertzuweisung benutzt:

	
#!/usr/bin/perl
#############################################
##
##	Perlkurs Linuxmagazin Teil 1
##
##  5. Quadratwuzel
##
##

{

	print "\n\nBerechnung einer Quadratwurzel \n";
	print "==============================\n\n";
	print "Basiszahl: ";
	$basis = ;
	chop ($basis);
	$wert = sqrt ($basis);
	print "Die Quadratwurzel der Zahl $basis ist: $wert\n\n";
}

Der Autor

Achim Schmidt ist staatlich geprüfter Assistent für Automatisierungs- und Computertechnik (HBFS) und beschäftigt sich bereits seit 6 Jahren intensiv mit dem Internet und seinen Diensten. Mit Linux wurde er erstmalig 1992 beim Aufbau eines Mailboxsystemes direkt konfrontiert. Seit 1993 sind bereits einige Publikationen (http://www.saar.de/~as/publications/) von ihm in verschiedenen Medien erschienen . Seit 1995 ist er als Netzwerk- und Systemmanager tätig und beschäftigt sich dabei auch mir der Entwicklung und Realisierung WWW- basierter Onlinesysteme und Internetkopplungen. Zu erreichen ist er unter as@Saar.DE.

Copyright © 1997 Linux-Magazin Verlag