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";
}