#!/usr/local/bin/perl -w for($i = 1;$i <= 5;$i ++) { if ($i < 3) { print "($i) kleiner als 3\n" } elsif ($i == 4) { print "($i) gleich 4\n" } elsif ($i > 4) { print "($i) größer als 4\n" } else { print "($i) keine der anderen Bedingungen erfüllt\n" } unless($i == 2) { print "[$i] ungleich 2\n" } } |
(1) kleiner als 3 [1] ungleich 2 (2) kleiner als 3 (3) keine der anderen Bedingungen erfuellt [3] ungleich 2 (4) gleich 4 [4] ungleich 2 (5) groesser als 4 [5] ungleich 2 |
Das Argument von if
ist eine Bedingung, die entweder wahr
("true") oder falsch ("false") ist. Im Falle von "wahr" wird der
Block nach if
ausgeführt. Ist die
if
-Bedingung falsch, so wird (falls vorhanden) das
Argument des ersten elsif
ausgewertet. Liefert auch
dieses nicht den Wert true, kommt das nächste elsif
an die Reihe; so lange bis entweder eine Bedingung wahr ist, keine
Bedingungen mehr vorhanden sind oder ein abschließendes
else
erreicht wird, dessen Block ausgeführt wird,
falls kein anderer Block infrage kommt.
Im Gegensatz zu anderen Programmiersprachen wie z.B. C muß
der Block nach einem if
, elsif
oder
else
immer in geschweiften Klammern stehen; dadurch
werden eventuelle Mehrdeutigkeiten vermieden.
Das Gegenstück von if
ist unless
, dessen
Block nur ausgeführt wird, wenn die Bedingung im Argument den Wert
false liefert.
Eine Alternative zu einer if
-else
-Konstruktion
ist die Verwendung des Operators "?:
":
$a == 1 ? print "a gleich 1" : print "a ungleich 1";
while
und until
#!/usr/local/bin/perl -w $i = 0; while($i < 10) { print "$i\n"; $i += 2; } until($i == 5) { print "$i\n"; $i --; } |
while
-Schleife wird zuerst das Argument
überprüft. Falls dies true liefert, wird der
Schleifenblock ausgeführt. Dies wiederholt sich so lange, bis das
while
-Argument false ist.
Die Negation der while
-Schleife ist die Konstruktion
mit Hilfe von until
. Hier wird der Schleifenkörper
so lange wiederholt bis das Argument von until
den
Wert true liefert.
Obiges Programm liefert demzufolge die Ausgabe
0 2 4 6 8 10 9 8 7 6 |
for
und foreach
#!/usr/local/bin/perl -w for($i = 1;$i <= 10;$i++) { print "$i\n"; } |
Zu allererst wird die Anweisung im 1.Argument von for
ausgeführt. Anschließend wird das 2.Argument
überprüft. Liefert diese Abfrage eine wahre Aussage
(true), so wird der Schleifenblock ausgeführt.
Nach dem Block wird das 3.Argument von for
ausgewertet
und dann wieder das Argument Nummer 2 überprüft. Dies
wiederholt sich so lange, bis die Bedingung (Argument 2) nicht mehr
erfüllt ist (Wert false). Dann fährt das Programm
in der Zeile nach dem Schleifenblock fort.
Die for
-Schleife ist eigentlich nur eine vereinfachte
Schreibweise; obiges Beispielprogramm läßt sich auch
wie folgt schreiben:
#!/usr/local/bin/perl -w $i = 1; while($i <= 10) { print "$i\n"; $i++; } |
Anstatt der drei durch Semikolons getrennten Argumente, kann
for
auch eine Liste übergeben werden, die
dann sukzessive abgearbeitet wird. Aus Gründen der
Übersichtlichkeit sollte in so einem Falle aber an Stelle
von for
das äquivalente foreach
stehen. Die einzelnen Zeilen des folgenden Skripts leisten alle
das gleiche: Sie geben die Zahlen von 1 bis 10 aus.
#!/usr/local/bin/perl -w for((1,2,3,4,5,6,7,8,9,10)) { print $_."\n" } foreach((1,2,3,4,5,6,7,8,9,10)) { print $_."\n" } foreach(1..10) { print $_."\n" } foreach $nr (1..10) { print $nr."\n" } |
In der letzten Zeilen sieht man, wie das gerade von foreach
bearbeitete Listenelement einer Variablen zugewiesen werden kann. Wird
keine solche Variable angegeben, so steht der aktuelle Listenwert
in der speziellen Variablen $_
.
Autor: Eike Grote | Letzte Änderung: 06.09.1998 |