Se una certa parte di codice deve essere richiamata più volte all'interno di
uno script o semplicemente per motivi di leggibilità del codice stesso, può
essere utile spezzare un lungo script in più subroutine, ossia piccoli
pezzi di sottoprogramma con una loro propria identità logica e funzionale. In
Perl chiameremo quindi subroutine ciò che in Pascal viene chiamato
procedura ed in C funzione.
Una subroutine deve essere definita prima di poterla utilizzare; per far
questo si usa il seguente costrutto:
| sub |
nome_subroutine { |
|
blocco di istruzioni della subroutine |
|
return valore_di_ritorno; |
| } |
È possibile passare dei parametri alla subroutine, che verranno memorizzati
dall'interprete nell'array ``@_''. La subroutine può a sua volta
restituire un valore che deve essere specificato come argomento della funzione
return.
Per richiamare una subroutine definita nello script si deve specificare il
nome preceduto dal simbolo ``&'' e seguito dalle parentesi che
possono eventualmente contenere i parametri (separati da virgole) passati alla
subroutine.
Con la funzione local possono essere definite delle variabili
locali che hanno validità solo all'interno della subroutine.
Nell'esempio seguente viene definita una subroutine ``media'' che
restituisce la media aritmetica dei numeri passati come argomento:
#!/usr/local/bin/perl
# media.pl
# legge dei valori in input e ne stampa la
# media aritmetica
sub media {
local($n, $somma, $media);
foreach $n (@_) {
$somma += $n;
}
$media = $somma/($#_+1);
return($media);
}
print "Inserisci i numeri:\n";
@numeri = <STDIN>;
chop(@numeri);
$media = &media(@numeri);
print "media = $media\n";