Beispiele (if/ unless, else, elsif) #!/usr/bin/perl $W = $ENV{'HTTP_USER_AGENT'} =~ /95/ ? "Win 95/NT" : "kein Win 95/NT"; print "Content-type: text/html\n\n"; print "<html><head><title>User</title></head>\n"; print "<body>\n"; print "<h1>Sie haben ", $W, "!</h1>\n"; print "</body></html>\n"; exit(0);
'Da es sich um Werte handelt, die für die Weiterverarbeitung nur sinnvoll sind, wenn sie in einer Variablen gespeichert werden, wird einer solchen Entweder-Oder-Abfrage in der Regel eine Variable vorangestellt, im Beispiel der Skalar $W.' (SelfHTML, siehe auch Javascript: alternative Syntax f. if/else)
Schleifen werden so lange durchlaufen, bis eine bestimmte Bedingung erfüllt ist.
#!/usr/bin/perl $i = 1; print "zuerst die Wurzeln von 1 bis 10...\n\n"; while($i <= 10) { print "Die Wurzel von ", $i, " ist ", sqrt($i), "\n"; $i++; } $i = 1; print "und jetzt die Quadratzahlen von 1 bis 10...\n\n"; until($i > 10) { print "Das Quadrat von ", $i, " ist ", $i * $i, "\n"; $i++; }
#!/usr/bin/perl $Name = "Stefan"; do { print $Name, "\n"; $Name = "Virtuella"; } while($Name ne "Virtuella")
#!/usr/bin/perl for($i=0;$i<=255;$i++) { printf("%4d = %2X",$i, $i); } #!/usr/bin/perl @Alphabet = (A..Z); for(@Alphabet) { print $_, " ist der ", $i+1, ". Buchstabe im Alphabet\n"; $i++; } #!/usr/bin/perl foreach $i (1..100) { next if $i % 2 == 0; print $i, "\n" if $i % 3 == 0; }
Erstes Beispiel: for C-konform: 3 Anweisungen- 1. Variable definieren, 2. Endbedingung festlegen, 3. Anweisung festlegen, so dass die Endbedingung erreicht wird, z.B. $i++.
Zweites Beispiel: for , Perl- typisch, nützlich zur Abarbeitung von Arrays oder Hashs. Dabei hilft die vordefinierte Variable $_, welche den gerade aktuellen Wert der Variablen darstellt.
Drittes Beispiel: foreach. Mit einer solchen Schleife können alle Elemente eines Arrays abgearbeitet werden. Als Schleifenbedingung wird ein eindeutiger Bereich definiert, z.B. eine Zahlen- oder Zeichenmenge.
#!/usr/bin/perl # Raten Sie mal, welche Zahl $i am Ende als Ergebnis ausgibt $i = 1; goto Ergebnis; while($i < 1000) { ++$i; if($i % 3 == 0) { redo; } elsif($i % 7 == 0) { next; } elsif($i % 13 == 0) { last; } elsif($i % 17 == 0) { continue; } } Ergebnis: print "Ergebnis: ", $i; #!/usr/bin/perl while($i < 10) { ++$i; if($i % 2 != 0) { redo; } } continue { print $i, "\n"; }