www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Kapitel 11: Subroutinen

Inhalt
Synopsis
myfunc(); myfunc; &myfunc();         # Aufruf von Subroutinen

myfunc($arg1, @list2);               # Argumente beim Aufruf
myfunc(\@list1, \@list2);            # Listen als Referenzen

# Aufruf mit benannten Argumenten:
$success = sendit( from => 'someone@somewhere.org',
                   to   => 'somebody@cs.someuniversity.edu',
                   subject => $subject,
                   body => \@lines );

$retval = myfunc(3277, "hi");        # Rückgabewert
($r1, $r2, @rest) = myfunc();        # Mehrere Rückgabewerte

$hour = (localtime(time))[2];        # Listenkontext
$ctate = localtime(time);            # Skalarer Kontext
sideeffects($i, $line);              # Void-Kontext

# Konventionelle Definition von Subroutinen:
sub myfunc {
    my ($from, $to, $subject, @body) = @_;
    # Tue etwas mit diesen Argumenten
    # Call by value: $from, $to, etc...
    # Parameter veränderbar: $_[0], $_[1], ...
}
# Definition mit benannten Argumenten:
sub myfunc {
    my %params = (
           subject  => 'testmail, please ignore', # Default-
           date     => localtime(time),           # Argumente
           @_ );
    # Tue etwas mit den Parametern
}

# Rückgabewerte bei der Definition:
sub myfunc {
    return $scalar;                   # Nur ein Skalar
    return ($val1, $val2, @list3);    # Rückgabeliste
    return wantarray ? @T : $s1;      # Kontextsensitiv
}
Beispielprogramme
lastone.pl Letzte Anweisung == Wert der Funktion
addcumul.pl wantarray() und kumulative Summe
closure1.pl Das Grundprinzip der Closure
closure2.pl Aufrufzähler und static-Variablen mit Closures
closure3.pl Closures im Streaming-Modus: Kartesisches Produkt
closure4.pl Einfacher Puffer. Closure mit gemeinsamen Daten
closure5.pl Smarte Callbacks mit Closures. Simuliert GUI
fib-memoize.pl Memoizing zur Beschleunigung der Fibonacci-Funktion
symbol.pl Verwendet das Standardmodul Symbol für Filehandles
typglob.pl Übergabe von Filehandles an Funktionen mit Typglobs
autoload1.pl Eine benutzerdefinierte AUTOLOAD-Funktion
autoload2.pl Selektive Simulation von Funktionen mit AUTOLOAD()
autoload3.pl Laden von Funktionen aus einem persistenten Hash
autoload4.pl Liest Funktionsdefinition bei Bedarf aus einer Datei
add.inc Wird durch AUTOLOAD() von autoload4.pl geladen
Ergänzungen
Lösungen zu ausgewählten Übungsaufgaben

In Vorbereitung

FAQ

In Vorbereitung

Errata

[Prev] [Up] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:45 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo