  
Unterprogramme
werdne immer dann eingesetzt wenn ein bestimmter
Code öfters, aber nicht nur an einer Stelle
des Codes, ausgeführt werden muss. Das erhöht
die Übersichtlichkeit & Kompaktheit des
Codes enorm.
Unterkapitelindex
10.1 Unterprogramme
10.2 Aufruf von Unterprogrammen
10.3 Paramter auswerten
10.3b Paramter auswerten -
2te Runde
10.4 Rückgabewerte
|
|
10.1
Unterprogramme
Ein einfaches Unterprogramm sieht so aus:
01
02
03
04
|
sub printi{
print "Hello subs!";
return;
}
|
Dieses
Programm können Sie nun einfach durch "&printi;"
aufrufen, überall wo nun im Code "&printi;"
steht wird später "Hello Subs!" ausgegeben. |
|
10.2
Aufruf von Unterprogrammen
Hier ein paar Beispiele für den Aufruf von
Unterprogrammen:
01
02
03
|
&printi;
&printi (1);
&printi (1,2);
|
01 Die Sub &printi wird ohne Übergabe von
Parametern aufgerufen.
02 Die
Sub &printi wird mit Übergabe von einem
Parameter aufgerufen.
03 Die
Sub &printi wird mit Übergabe von zwei
Parametern aufgerufen.
Wie Sie diese Parameter auswerten können, können
Sie im 3. Unterkapitel nachlesen.
Zu
beachten hierbei ist, das der Prefix "&"
optional ist, der Code hätte also auch so aussehen
können:
01
02
03
|
printi;
printi (1);
printi (1,2);
|
|
|
10.3
Parameter
Ein Beispiel für eine Sub die mit 2 Parametern
aufgerufen wird:
01
02
03
04
05
06
07
|
sub printi {
my $va = $_[0];
my $vb = $_[1];
print $va + $vb;
return;
}
|
Wenn das
Unterprogramm nun mit &printi (1,2); aufgerufen
wird, wird das Unterprogramm "3" ausgeben.
In dem Array $_ sind alle Parameter gespeichert.
Dieser Array kann wie jeder andere Array behandelt
werden . |
|
10.3b
Parameter
- 2te Runde
Ein Beispiel für eine Sub die mit 2 Parametern
aufgerufen wird:
01
02
03
04
05
06
07
|
sub printi {
my $va = shift;
my $vb = shift;
print $va + $vb;
return;
}
|
Dieses
Programm macht genau das selbe wie das in 10.3 -
Nur auf einen anderen Weg. Anstatt den Array $_
explizit zu nutzen wird hier immer nur ein Element
des Arrays abgerufen.
Diese Methode wird eher empfohlen da i.d.R. jedes
Element der Übergabe an eine Prozedur ausgewertet
werden soll(te). |
|
10.4
Rückgabewerte
Aus dem obigen Beispiel kann man ein Unterprogramm
zum Addieren erstellen indem man folgendes schreibt:
01
02
03
04
05
06
07
|
sub printi {
my $a = $_[0];
my $b = $_[1];
$a + $b;
return;
}
|
Die Routine
gibt dann als Wert 3 zurück. Aufgerufen wird
Sie wie folgt:
In diesem
Beispiel wird der Rückgabewert direkt an die
Print Anweisung übergeben. Der Rückgabewert
einer Sub ist immer der zuletzt berechnete Wert.
 
|