::Tips & Tricks / Verschiedenes / Perl / 4. Flu├čkontrolle Seite drucken
  der verein   projekte   veranstaltungen   hilfestellung   tips & tricks   fun   
 
  
  grunds├Ątzliches
  
  fenstermanager
  
  web, mail & news
  
  multimedia
  
  novell/suse
  
  gentoo
  
  VERSCHIEDENES
 externe usb-platten mounten
 datenrettung
 perl
  
  links


home
sitemap
suche
login
hilfeforum
impressum



Finde uns auf:
 

4. Flu├čkontrolle

Ein Programm besteht nicht nur aus Anweisungen die nacheinander abgearbeitet werden. In der Regel werden Aufgrund der zu verarbeitenden Daten Entscheidungen getroffen was das Programm als n├Ąchstes macht.

4.1 if

 

Mit den gerade eingef├╝hrten Operatoren k├Ânnen in der if-Anweisung der weitere Programmablauf gesteuert werden. Es k├Ânnen mehrere Bedingungen formuliert werden die nacheinander ├╝berpr├╝ft werden. Sollte keine der Bedingungen zutreffen, so wird der evtl. vorhandene "else"-Zweig ausgef├╝hrt.

<typocode>

 

$a = 10;

if ($a < 100)

{

Anweisungsblock

}

elsif ($a > 1000)

{

Anweisungsblock

}

else

{

Anweisungsblock

}

</typocode>

In den Anweisungen zur Flu├čkontrolle finden auch die zuvor erl├Ąuterten logischen Verkn├╝pfungen Anwendung:

<typocode>

if ($a < 100 || $b > 1000)

{

Anweisungsblock

}

</typocode>

4.2 while

Die Bedingung der while-Schleife wird vor der Ausf├╝hrung des Schleifenblocks ├╝berpr├╝ft. Wenn die Bedingung zutrifft, wird der Schleifenblock ausgef├╝hrt. Man spricht hier von einer "abweisenden" Schleife, d.h. der Code-Block wird evtl. gar nicht ausgef├╝hrt.

<typocode>

$a = 0;

while ($a < 10)

{

print $a++;

}

</typocode>

Bei $a++ handelt es sich um ein sogenanntes Postincrement - die Variable wird f├╝r eine Operation genutzt und anschliessend um 1 erh├Âht. Es gibt auch die Addition vor der Verwendung der Variablen: ++$a. Dies wird als Preincrement bezeichnet.

 

Eine Subtraktion ist ebenfalls m├Âglich: --$a oder $a--

4.3 foreach

Mit foreach kann ein Array unbekannter gr├Â├če bearbeitet werden. Das folgende Beispiel weist der sogenannten Steuerungsvariablen ($a) nacheinander jedes Listenelement zu.

<typocode>

@array = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

foreach $a (@array)

{

print $a;

}

</typocode>

Die Werte eines Hash k├Ânnen wie folgt ausgegeben werden:

<typocode>

foreach $a (keys %myhash)

{

print $myhash{$a};

}

</typocode>

 

4.4 for

Die for-Schleife gibt eine bestimmte Menge von Schleifendurchl├Ąufen exakt vor.

<typocode>

 

for ($a = 0; $a < 10; $a++)

{

print $a;

}

</typocode>

Die Anzahl der Durchl├Ąufe kann aber auch ohne eine Zuweisung an eine Variable geschrieben werden. Das folgende Beispiel gibt 10 Leerzeilen aus.

<typocode>

for (0..10)

{

print "\n";

}

</typocode>

Die Anzahl der Listenelemente ist ├╝ber $#array bekannt und das Beispiel von foreach k├Ânnte also wie folgt mit einer for-Schleife realisiert werden:

<typocode>

@array = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

for ($i = 0; $i < $#array; $i++)

{

print $array[$i];

}

</typocode>

4.5 Schleifenabbruch

Unter gewissen Bedingungen m├Âchte man eine Schleife sofort verlassen oder ernneut von Anfang durchlaufen.

<typolist>

last - verl├Ąsst die Schleife sofort

next - springt zum Anfang der Schleife und startet den n├Ąchsten Durchlauf

</typolist>

 

Die Schleife wird sofort erneut begonnen falls der gesuchte String nicht enthalten ist.

Die Schleife wird beendet falls der Z├Ąhler einen Grenzwert ├╝berschreitet.

<typocode>

while(<DH>)

{

if (index($_, "SUCHTEXT") < 0)

{

next;

}

$i++;

if ($i > 100)

{

last;

}

}

</typocode>

4.6 Subroutinen

Funktionen werden in Perl mit dem Schl├╝sselwort sub eingeleitet. Danach folgt der Funktionsname und der Anweisungsblock. Eine minimale Funktion k├Ânnte z.B. wie folgt aussehen:

<typocode>

sub print_hallo

{

print "hallo";

}

</typocode>

Diese Funktion kann nun mit der folgenden Anweisung gennutzt werden.

<typocode>

&print_hallo;

</typocode>

Damit eine Funktion lokale Variablen nutzen kann, m├╝ssen Variablen mit dem Schl├╝sselwort my definiert werden.

 

Parameter k├Ânnen beim Funktionsaufruf einfach in Klammern angegeben werden. Die Werte k├Ânnen in der Funktion aus der speziellen Variable @_ gelesen und einer lokalen Variablenliste zugewiesen werden.

<typocode>

sub print_hallo

{

my ($n, $text) = @_;

for ($i = 0; $i < $n; $i++)

{

print "$text\n";

}

}

&print_hallo(5, "hallo");

</typocode>

Das Beispiel gibt f├╝nfmal "hallo" aus.