Subroutinen sind wiederverwendbare Codeblöcke.
Es gibt Perleigene Funktionen ( siehe man perlfunc ) und Selbstdefinierte.
Die Begriffe Subroutine, Funktion ,Prozedur können synonym verwendet werden.
Eigenschaften
Subroutinen können überall im Programm definiert werden.
Zur besseren Übersicht werden sie häufig am Ende des Quelltextes definiert.
Subroutinen akzeptieren Parameter, in Perl ist die Anzahl variabel.
Subroutinen können einen oder mehrere Werte zurückliefern.
Subroutinen können rekursiv aufgerufen werden.
Syntax
sub name_der_funktion {
$parameter1 = shift;
Anweisungen...return $rueck;
}
Der Aufruf einer Funktion erfolgt alternativ mit
name_der funktion;
name_der_funktion();
&name_der_funktion()
Wobei in () die Parameter eingegeben werden können : name_der_funktion($var,$str).
Die Parameter werden in der Subroutine sukzessive mit shift eingelesen.
Veränderung der Aufrufparameter : my
Mit der Parameterübernahme in der Form $parameter1 = shift und anschließender
Veränderung von $parameter wird auch der Wert des Parameters aus dem Funktionsaufruf
geändert. ( Call by reference ).
Mit der Parameterübernahme in der Form my $parameter1 = shift wird eine Kopie
des Übergabeparameters angelegt. Eine Veränderung der Kopie ändert das Original nicht.
( Call by value ).
Rückgabewerte mit return
Mit return $rueck kann die Funktion sofort verlassen werden, return kann dabei
an beliebiger Stelle im Funktionsblock { ... } stehen. Mit $rueck wird dann
der Rückgabewert festgelegt.
Globale und Lokale Variablen
Variablen sind üblicherweise überall gültig (Hauptprogramm/Subroutinen).
Sie heißen dann globale Variablen
Werden in einer Funktion Variablen verwendet, die nur dort verwendet werden, dann werden sie
mit my $var; deklariert.
Sie heißen dann lokale Variablen, sie sind nur in dem jeweiligen Anweisungsblock
gültig, ihr Speicherplatz wird mit Verlassen des Blockes freigegeben ( sie "sterben" ).
Dadurch wird vermieden, daß Variablen im Hauptprogramm versehentlich überschrieben werden
( z.B. Laufvariablen ! )