Unterprogramme
Unterprogramme mit Parameterübergaben und
Rückgabewert
Perl-Funktionen
Ein weitere Strukturierungsmöglichkeit in Perl bieten Unterprogramme.
#!/usr/bin/perl $name = "Marco"; $alter = 18; &Ausgabe; sub Ausgabe { my $alter = 19; print $name, " ist ", $alter, " Jahre alt."; #Ausgabe: Marco ist 19 Jahre alt. } |
Unterprogramme werden mit dem Schlüsselwort sub eingeleitet. Es folgt der Unterprogrammname und schließlich der Anweisungsblock in geschweiften Klammern. Mit einem kaufmännischen-Und-Zeichen & und dem Unterprogrammname wird ein Unterprogramm aufgerufen.
Um in einem Unterprogramm ein lokale Variable zu definieren, muss der Variable das Schlüsselwort my vorangestellt werden. Verwendet man dieses Schlüsselwort nicht, wird auf die globale Variable zugegriffen. Bei der Verwendung der lokalen Variable ist es nicht mehr nötig das Schlüsselwort my voranzustellen (siehe Beispiel 1).
Es ist völlig egal an welcher Stelle ein Unterprogramm definiert werden, zuerst werde vom Perl-Interpreter jene Anweisungen ausgeführt die außerhalb der Unterprogramme stehen. Sobald ein Unterprogramm ausgeführt werden soll, sucht der Perl-Interpreter im gesamten Skript danach.
![]() ![]() |
Wie auch in anderen Programmiersprachen auch, ist es in Perl möglich Parameter einem Unterprogramm zu übergeben bzw. von einem Unterprogramm einen Rückgabewert zu erhalten.
#!/usr/bin/perl $x = &Rechne(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9); print $x, "\n"; sub Rechne { return eval($_[0]); } |
Im Gegensatz zu anderen Programmiersprachen ist es in Perl nicht nötig die Parameterliste eines Unterprogramms zu definieren. Die Parameter werden in einer vordefinierten Liste abgespeichert, auf welche das Unterprogramm zugreifen kann. Im obigen Beispiel 1 wird mit dem Konstrukt $_[0] das erste Element der vordefinierten Liste @_ angesprochen.
Werden mehrer Parameter angegeben, so müssen diese durch ein Komma , getrennt werden.
![]() ![]() |
Ein weiterer Grund warum Perl so mächtig ist, sind die vielen vordefinierten Funktionen. Dazu zählen mathematische Funktionen, Funktionen für das Lesen und Schreiben von Dateien oder auch Funktionen zum Zeichenketten bearbeiten.
#!/usr/bin/perl print "Geben Sie eine Reihe von Begriffen, getrennt durch Kommata, ein:\n"; $Eingabe = <STDIN>; @Liste = split(/,/, $Eingabe); @SortierteListe = reverse(sort(@Liste)); print "Hier die Ausgabe der alphabetisch sortierten Begriffe:\n"; for(@SortierteListe) { if(/\n/){ chop($_); } print $_, "\n"; } |
In Beispiel 1 wird zunächst eine Zeichenkette von der Konsole <STDIN> eingelesen. Diese Zeichenkette wird mit split geteilt und die einzelnen Teilzeichenketten werden in einer Liste @Liste gespeichert. Die Liste wird invers sortiert und die einzelnen Elemente werden mit print ausgegeben. Die if-Abfrage prüft zuvor noch ob sich ein Zeilenumbruch \n im Elemente enthält und reagiert mit einem Entfernen des letzten Zeichens chop (da nur eine Zeile eingelesen wird, befindet sich der Zeilenumbruch am Ende des letzten Elements).
Funktion | Bedeutung |
Gibt eine Variablen auf die Standardausgabe aus | |
sort | Sortierte eine Liste (nach dem ASCII-Code) |
reverse | Inverses sortieren einer Liste |
chop | Entfernt das letze Zeichen einer Zeichenkette |
split | Teilt ein Zeichenkette in mehrere Teile und speichert diese in einer Liste ab. Der erste Parameter gibt das Symbol an, welches die einzelnen Listenteile trennt, der zweite Parameter die Zeichenkette selbst. |
![]() |
Index | ![]() |