Alprogramok deklarálása:
\item sub NEV; # a NEV ismertté tétele \item sub NEV BLOCK # deklarálás és definíció
Egy alprogramot nem kell előre deklarálni ahhoz, hogy használhassuk. Az alprogramoknál a paraméterlistát sem kell deklarálni, mert ez változhat. A hívott alprogram a paramétereket a @_ listán keresztül kapja meg. Az alprogram utolsó utasításának az értéke lesz a visszatérési érték, hacsak nincs egy return utasításban más megadva.
sub max { my $max = pop(@_); foreach $elem (@_) { $max = $elem if $max
Alprogram hívása:
&NEV; # az aktuális @_-t adja tovább &NEV(LISTA); # Ha &-t írunk, akkor () kötelező NEV(LISTA); # & elhagyható ha van () vagy már deklarált NEV LISTA; # () elhagyható, ha a NEV már deklarált
Alprogram hívása akkor megy ilyen egyszerűen ha az az őt tartalmazó modulban látható. Ha ettől eltérő modulban lett deklarálva, akkor modulhivatkozással, vagy valamilyen objektum-orientált technikával kell meghívni a kívánt eljárást (ld. később).
$m = &max(1,2,3); # a hatás ugyan az $m = max 1 2 3;
Névtelen alprogram létrehozása:
$alpref = sub BLOCK; # deklarálás &$alpref(1,2,3); # hívás
Ez a technika főleg egyszer használatos alprogramoknál lehet hasznos, például egy signal kezelő átdefiniálásakor.