next up previous index
Következő: 9.1.1.14.1 Névtelen alprogramok definiált Fel: 9.1.1 Perl magyarul Előző: 9.1.1.13 Előre definiált változók   Index

9.1.1.14 Alprogramok írása

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.






1999-09-17