ein Kapitel zurück                                           ein Kapitel weiter

In jeder Programmiersprache gibt es sogenannte Kontrollstrukturen mit denen sie die Ausführung Ihres Programms steuern können. Dabei gibt es zwei Möglichkeiten der
Ausführungen mit Kontrollstrukturen....

  • die bedingte Ausführung (wird nur Ausgeführt wenn einen bestimmte Bedienung erfüllt wurde)
  • die wiederholte Ausführung (wird solange wiederholt bis einen bestimmte Bedienung erfüllt ist)

Folgende Schlüsselwörter gibt es für Perl.

if, else, while, do, for, foreach, SWITCH

Für Leute die bereits Erfahrung in einer Programmiersprache wie z.B. C/C++ haben können ja die Kapitel if, else, while, do und for etwas schneller überfliegen da dies in Perl exakt genauso funktioniert wie in C/C++. Neu dürfte denen lediglich das Schlüsselwort foreach sein.

Hier der Syntax von if.......


if(BEDIENUNG)
 {
 IST BEDIENUG WAHR SIND WIR HIER IM
 ANWEISUNGSBLOCK;
 }


Die if-Bedienung überprüft ob die Bedienung in den Klammern wahr ist. Falls diese wahr ist wird der Code im Anweisungsblock ausgeführt der zwischen geschweiften Klammern steht. Ist die Bedienung nicht wahr. Wird der Code hinter dem  Anweisungsblock ausgeführt.


#!/usr/bin/perl -w

$secret=123456;
$eingabe=0;

print "Bitte geben sie Ihre Geheimzahl ein : ";
chomp($eingabe=<STDIN>);

if($secret == $eingabe)
 {
    print $eingabe . " war das richtige Passwort\n";
 }


Bei diesem Programm werden sie aufgefordert ein Zahl einzugeben. Die if-Bedienung überprüft diese Eingabe dann mittels............

if($passwort == $eingabe)   


Stimmt die die Geheimzahl $secret mit der Eingabe $eingabe überein wird die Anweisung im Anweisungsblock ausgeführt. Ansonsten wird das Programm ohne Ausgabe beendet.

Wenn wir nun bei falscher Eingabe ausgeben wollen das wir die falsche Zahl eingeben benötigen wir noch die else-Anweisung, was soviel bedeutet wie SONST..........


if(BEDIENUNG)
 {
  ANWEISUNGSBLOCK FÜR BEDIENUNG==WAHR;
 }
else
 {
  ANWEISUNGSBLOCK FÜR BEDIENUNG==FALSCH;
 }


Schreiben wir die else-Anweisung in unser Programm..........


#!/usr/bin/perl -w

$passwort=123456;
$eingabe=0;

print "Bitte geben sie Ihre Geheimzahl ein : ";
chomp($eingabe=<STDIN>);

if($passwort == $eingabe)
 {
   print $eingabe . " war das richtige Passwort\n";
 }
else
 {
   print qq§Ihre Eingabe "($eingabe)" wahr falsch§ . "\n";
 }


Jetzt wird bei falscher Eingabe auch entsprechende Meldung ausgegeben.

Nun benötigen wir die Kenntnis der Vergleichsoperatoren die sie einsetzen können um z.B. zwei Wert oder zwei Zeichenketten miteinander zu vergleichen.

Denn Zahlenoperator bei Gleichheit haben wir ja soeben verwendet (==). Wenn sie versuchen zwei Zeichenketten mit diesem Operator zu vergleichen werden sie mit einer Fehlermeldung scheitern.
Um 2 Zeichenketten miteinander zu vergleichen benötigen wir den Operator eq (equal).
In C benötigen sie dazu die Funktion strcmp. Wollen wir das Programm zur  Passwortabfrage nun mit Zeichenkette machen..........


#!/usr/bin/perl -w

$passwort="pinguin";
$eingabe=0;

print "Bitte geben sie Ihr Passwort ein : ";
chomp($eingabe=<STDIN>);

if($passwort eq $eingabe)
 {
   print $eingabe . " war das richtige Passwort\n";
 }
else
 {
   print qq§Ihre Eingabe "($eingabe)" wahr falsch§ . "\n";
 }


Mit diesem einfachen Operator sind wir nun in der Lage zwei Zeichenketten auf  Gleichheit zu prüfen. Hier nun ein weitere Überblick der Operatoren die sie verwenden können.......


Vergleich auf  Zahlenoperator Zeichenketten-Operator
Gleichheit  == eq (equal)
nicht Gleichheit  !=  ne (not equal)
größer als   gt (greater then)
kleiner als  <   lt (larger then)
kleiner oder gleich  <=  le (less or equal)
größer oder gleich >=  ge (greater or equal)
-1, 0, oder 1 <=>  


Der Operator <=> wird hauptsächlich zum Sortieren von Zahlen verwendet...

#!/usr/bin/perl -w

@nummern = (12, 165, 2, 7);

print "Sortiert : ",
      join('-', sort $a <=> $b @nummern) , "\n";


Die Variablen $a und $b sind weitere Standardvariablen die dafür verwendet werden.

Nun ein weiteres Beispiel zu den Operatoren...


#!/usr/bin/perl -w

$zahl1=0;

print "Bitte geben sie eine Zahl ein : ";
chomp($zahl1=<STDIN>);

print "\n", "Ich vergleiche die beiden Zahlen","\n";

if($zahl1 > 10)
 {
   print "\n" . $zahl1 . " ist grösser als 10\n";
 }
if($zahl1< 10)
 {
   print "\n" . $zahl1 . "ist kleiner als 10\n";
 }
else
 {
   print "\nSie haben den Wert 10 eingeben\n";
 }


Wenn sie in diesem Beispiel z.B. den Wert 20 eingeben wird anschließend dennoch überprüft ob die Zahl auch kleiner wie 10 ist. Dies können wir uns mit dem Schlüsselwert elsif ersparen.......


if(BEDIENUNG1)
  {Anweisung};
elsif(BEDIENUNG2)
  {Anweisung};
elsif(BEDIENUNG3)
  {Anweisung}
   ............
   ...........
else
   {Anweisung}


Sie können soviel elsif mit der if-Bedienung verschachteln wie sie wollen. Wollen wir uns dies an unserem Beispiel oben anschauen...........


#!/usr/bin/perl -w

$zahl1=0;
$zahl2=0;

print "Bitte geben sie eine Zahl ein : ";
chomp($zahl1=<STDIN>);

print "Bitte geben sie noch eine Zahl ein : ";
chomp($zahl2=<STDIN>);

print "\n", "Ich vergleiche die beiden Zahlen","\n";

if($zahl1 > $zahl2)
 {
   print "\n" . $zahl1 . " ist grösser als " . $zahl2 . "\n";
 }
elsif($zahl1 < $zahl2)
 {
   print "\n" . $zahl1 . " ist kleiner als " . $zahl2 . "\n";
 }
else
 {
   print "\nDie beiden Zahlen haben den selben Wert\n";
 }


ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf