Benutzerdefinierte Funktionen werden mit
sub NAME { ... }
definiert und können dann mit
NAME(args)
&NAME(args)
aufgerufen werden. Es gibt auch Deklarationen (nur sub NAME;).
Innerhalb von Funktionen können lokale Variablen mit local()
(dynamically scoped) oder my() (lexically scoped) vereinbart werden.
Beispiel:
sub show
{
my $expr = $_[0];
print sprintf "%-12s = ", $expr;
eval "print $expr";
print "\n";
}
my() ist etwa vergleichbar zu C.