Bedingte VerzweigungPerl

Eine weitere Ggrudlegende Eigenschaft, sind bedingte Verzweigungen.

SeitenanfangSeitenendeif-Verzweigung

Wie in vielen anderen Programmiersprachen wird auch hier die bedingte Verzweigung mit if eingeleitet. Anschließend folgen ein Klammernpaar (), das die Bedingung enthält und ein Anweisungsblock in geschweiften Klammern {}, der dann abgearbeitet wir, falls die Bedingung in den runden Klammern true ergibt:

if ($i<12)   # ist $i kleiner als 12 ?
{   # falls ja: Anweisungsblock ausgeführen
  Befehl1;
  Befehl2;
  ...
}   # Ende Anweisungsblock

Die Bedingung nach dem if innerhalb der runden Klammern wird als erstes überprüft. Ergibt diese Bedingung den Wert true, so wird der anschließende Anweisungsblock ausgeführt, ansonsten macht Perl gleich nach Anweisungsblock weiter.

Bemerkung: Wenn der Anweisungsblock aus nur einem Befehl besteht, müssen die geschweiften Klammern trotzdem angegeben werden!

... und wo ist die Verzweigung? Gut ... also verzweigt wird mit elsif () und else:

if ($person eq "hugo")   # ist $person gleich "hugo" ?
{   # es ist "hugo"
  BefehlHugo1;
  ...
}
elsif($person eq "emil")   # ist $person gleich "emil" ?
{   # es ist "emil"
  BefehlEmil1;
  ...
}
elsif($person eq "hans")   # ist $person gleich "hans" ?
{   # es ist "hans"
  BefehlHans1;
  ...
}
else   # eine andere Person ist gesucht
{
  BefehlElse1;
  ...
}

Als erstes wird die Bedingung $person eq "hugo" getetstet. Ergibt dies true so wird der anschließende Anweisungsblock abgearbeitet. Ist Perl damit fertig, macht Perl nach dem ganzen Komplex - also hinter dem Anweisungsblock von else weiter. Wird obige Bedingung auf false getestet, so springt Perl zur nächsten Bedingung $person eq "emil" und testet diese. Bei einer wahren Aussage wird der nachfolgende Anweisungsblock abgearbeitet, ansonsten die nächste Bedingung getestet. Der else-Anweisungsblock dieser Konstruktion wird ausgeführt, falls alle vorangegangenen Tests false ergaben.

Weitere Beispiele:

if ($a==$b){
  print "$a == $b";
}
else{
  print "$a != $b"; }

if ($monat>12){
  print "Das Monat gibt's nicht!";
}
elsif ($monat<1){
  print "Das Monat gibt's nicht!";
}

SeitenanfangSeitenendeunless-Verzweigung

Die unless-Verzweigung ist ähnlich zur if-Verzweigung. Statt auf true wird aber auf false getestet.

unless (1>2)
{  # der Anweisungsblock wird ausgeführt
  print "1 ist nicht größer als 2";
}

Seitenanfang FehlermeldungHilfe zur Fehlermeldung © 2001-2003 Email an den AutorPerl, Lehrstuhl Mathe II, Uni Bayreuth