Спецификация языка Perl

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



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

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

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

    1. &NAME(LIST) - скобки обязательны для & формы.
    2. NAME(LIST) - & не обязательно со скобками.
    3. NAME LIST - скобки можно опустить в случае предварительного описания или включения подпрограммы из модуля.
    4. Аргументы передаются подпрограмме в виде локального массива @_, его элементы являются ссылками на реальные скалярные параметры. Подпрограмма возвращает значение, полученное в результате исполнения последнего оператора подпрограммы. Как уже говорилось, подпрограмма вызывается использованием префикса & перед ее именем, в 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);



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