StartseiteProgrammierungPerl

Kontrollstrukturen

18. JULI 2011
von Jörg
Programmierung - Perl

Arithmetik-Operatoren

  • Grundrechenarten: +, -, * und /
  • Potenz: **
  • Modulo: %
  • Shift (ganze Zahlen): » und «
  • Bit-Operatoren (ganze Zahlen): &, | und ˆ
  • Auto-Inkrement/-Dekrement: $n++; ++$n; $n--; und --$n;
  • Zuweisungen: =, +=, -=, *=, /=, . . .
  • Vergleiche: ==, !=, <, >, <=, >= und <=>

if-Abfragen (Fallunterscheidungen)

01
02
03
if(Bedingung){ ... }
elsif(Bedingung){ ... }
else { ... }
01
unless(Bedingung){ ... }
01
02
#tenäre Kontrollstruktur
($a>10)?($b=$a):($a=$b)
01
02
03
my $status = 1;
$status && go();
$status || go();

Zeile 2: Variable $status hat den Wert 1, für true, somit wird auch die Subroutine go(); aufgerufen.
Zeile 3: Da da die Variable $status schon true ist und die Verknüpfung eine "ODER" (||) ist, wird die Funktion go(); nicht aufgerufen.


01
02
my $thread  = $cgi->param("thread") if $cgi->param("thread");
my $thread  = 0 unless $cgi->param("thread");

Zeile 1: Wenn es den Parameter thread gibt dann soll die Variable $thread den Wert des Paramters annehmen.
Zeile 2: Wenn der Paramter nicht existiert dann wird der Variable 0 zugeteilt.

Schleifen

01
02
03
04
while(BEDINGUNG)  #solange es wahr ist
{
  #Anweisungsblock
}
01
02
03
04
05
do
{
  #Anweisungsblock
}
while(BEDINGUNG);  #bis etwas wahr ist, fussgesteuert
01
02
03
04
until(BEDINGUNG)  #bis etwas wahr ist
{
  #Anweisungsblock
}
01
02
03
04
for(my $i = 0; $i < 10; $i++) #läuft 10x durch
{
  #Anweisungsblock
}
01
foreach(1..10){ print $_."\n"; } #läuft 10x durch

Sprunganweisungen

01
02
03
04
05
06
07
while(Bedingung){
  # redo landet hier 
  if(){ next; }
  if(){ redo; }  
  if(){ last; }
  # next ladent hier
} # last landet hier

Programmabbrüche

exit:
Die exit-Funktion beendet sofort die Programmausführung mit einem angegebenen Exit-Status. Diese Funktion wird verwendet, um das Programm bei Fehlern zu beenden und um mithilfe des zurückgegeben Wertes verschiedene Arten von Fehlern zu unterscheiden.

01
02
03
04
if(!-e "nix.txt") { # alternativ: unless ( -e "nix.txt" )
    print "Datei nicht gefunden!";
    exit(1);
}

Hier wird überprüft, ob eine Datei namens nix.txt existiert. Wenn nicht, wird eine Fehlermeldung ausgegeben und und das Programm mit dem Wert 1 beendet.

warn:
Die warn-Funktion gibt einen Text sowie die Zeilennummer der betreffenden Zeile im Quelltext auf die Standardfehlerausgabe (STDERR) aus. Diese Funktion wird oft in Kombination mit der exit-Funktion bei der Fehlersuche benutzt, um Fehlermeldungen in eine log-Datei zu schreiben und das Programm zu beenden.

01
02
03
04
if(!-e "nix.txt"){
    warn "Datei nicht gefunden!";
    exit(1);
}

Hier wird zuerst überprüft, ob eine Datei "nix.txt" existiert. Wenn nicht, wird eine Fehlermeldung ausgegeben und das Programm beendet. Die Ausgabe würde so aussehen:
Datei nicht gefunden! at beispiel.pl line 2.

die:
Die Funktion die ist eine vereinfachte Kombination der Befehle warn und exit.
Die die-Funktion gibt die Fehlermeldung, die ihr übergeben wird auf der Standardfehlerausgabe ( STDERR ) aus und beendet das Programm mit einem Exit-Status ungleich 0. Dies kann praktisch sein, um schwere Fehler im Vorhinein abzufangen ( zB wenn eine notwendige Datei nicht geöffnet werden kann ).

01
open LOGDATEI, ">", "/tmp/log_mein_prog" or die "Kann Log-Datei nicht oeffnen: $!\n";

In diesem Beispiel wird versucht, die Logdatei "/tmp/log_mein_prog" zum Schreiben ( > ) zu oeffnen. Falls dies fehlschlägt, wird das Programm mit die und der mitgegebenen Meldung beendet. Die Spezialvariable $! enthält die System-Fehlermeldung in lesbarem Format ( zB. permission denied ).

Hinterlasse einen Kommentar

Ein Frosch der sich an der Seite festhält