PERL - статьи

П2.4.5.1 Подпрограммы


Описать и использовать подпрограмму можно несколькими способами:

  1. sub NAME; - подразумевает описание в дальнейшем тела подпрограммы.
  2. sub NAME BLOCK - непосредственное описание.
  3. $subref = sub BLOCK - анонимное описание.
  4. use PACKAGE qw(NAME1, NAME2, NAME3) - включение подпрограмм из модулей.
Вызвать подпрограмму можно тоже несколькими способами:

  1. &NAME(LIST) - скобки обязательны для & формы.
  2. NAME(LIST) - & не обязательно со скобками.
  3. NAME LIST - скобки можно опустить в случае предварительного описания или включения подпрограммы из модуля.
Аргументы передаются подпрограмме в виде локального массива @_, его элементы являются ссылками на реальные скалярные параметры. Подпрограмма возвращает значение, полученное в результате исполнения последнего оператора подпрограммы. Как уже говорилось, подпрограмма вызывается использованием префикса & перед ее именем, в Perl 5 этот префикс не обязателен. Пример: sub MAX {

my $max = pop(@_);

foreach $foo (@_) {

$max = $foo if $max < $foo;

}

$max;

}

...

$bestmark = &MAX(1,2,3,4,5);Подпрограмма может вызываться рекурсивно. Если подпрограмма вызывается с использованием & формы, то список аргументов необязателен. Если вы хотите создать внутри модуля его собственную, невидимую снаружи подпрограмму, то описание должно быть анонимным: my $subref = sub {...}

&$subref(1,2,3);



Содержание раздела