Definice a deklarace podprogramu
Deklarace podprogramu začíná klíčovým slovem „sub“, za kterým následuje jméno podprogramu (v případě, že nevytváříme anonymní podprogram). Nepovinně může následovat definice počtu a typu argumentů funkce. Následuje-li blok s tělem podprogramu, hovoříme o definici. Nechceme-li podprogram definovat hned, ale chceme-li interpretu říci, že existuje podprogram příslušného jména, můžeme provést tzv. dopřednou deklaraci — definici podprogramu bez bloku.
sub funkce;
// dopředná deklarace
sub funkce {...}
// definice funkce
sub funkce2 ($) {.,,}
// definice s argumenty funkce
Voláme-li funkci ještě před její definicí, je nutné seznam jejích argumentů uzavřít do kulatých závorek. Výjimkou je, provedeme-li před voláním funkce dopřednou deklaraci. V tom případě závorky nejsou nutné. Situace je uvedena v následujícím kódu.
sub soucet;
// dopředná deklarace
soucet 1,2,3;
// můžeme volat bez závorek
sub soucet {
$s = 0;
$s += $_ for @_;
print $s
}
Volání funkce
Voláním funkce rozumíme použití jména funkce ve výrazu. Každá funkce může přebírat seznam argumentů, které jsou určitým způsobem zpracovávány či ovlivňují chod funkce. Seznam argumentů je obyčejný seznam, proto se uzavírá do dvojice kulatých závorek. Není to však nutné v případě, že funkce byla dopředu deklarována či vtažena z jiného modulu. Funkce se nemusí volat s použitím počátečního &. Výjimkou je volání funkce pomocí dereference odkazu na funkci.
// definice funkce, jsou očekávány dva skalární argumenty
sub soucin ($$) {
print $_[0]*$_[1]
}
soucin 1, 2;
soucin (1, 2);
// Oba zápisy v pořádku
soucin 1, 2, 3;
soucin (1, 2, 3);
// V obou případech chyba, mnoho argumentů
& soucin 1, 2, 3;
& soucin (1, 2, 3);
// První v pořádku, třetí parametr se ignoruje
// Druhý syntaktická chyba
A to by bylo pro dnešek všechno. V dalším díle se podíváme na návratovou hodnotu a rekurzi, tedy volání funkce sebe sama. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman