Подпрограммы в языке Perl играют ту же роль, что и функции в языке С, или процедуры и функции в языке Pascal. Они выполняют две основные задачи:
Подпрограмма может быть определена в любом месте основной программы при помощи описания
sub name [(proto)] ({block}};
Здесь name имя подпрограммы;
(proto) прототип, конструкция, используемая для описания передаваемых подпрограмме параметров;
{block} блок операторов, являющийся определением подпрограммы и выполняющийся при каждом ее вызове.
Форма
sub name [ (proto)];
представляет собой предварительное объявление подпрограммы без ее определения. Пользователь, предпочитающий помещать описания всех подпрограмм в конце основной программы, должен при вызове еще не определенной фуНКЦИИ ИСПОЛЬЗОВаТЬ Специальный СИНТаКСИС &лагае ИЛИ name. Если же некоторое имя предварительно объявить в качестве имени функции, то сразу после объявления к этой функции можно обращаться просто по имени без применения специального синтаксиса.
#!/usr/bin/perl sub max {
my $maximum = shift @$_;
my $x;
foreach $x (@_) {
$maximum=$x if ($x > $maximum) ;
}
return $maximum } print "Наибольший аргумент=", max(3,5,17,9), "\n";
В данном примере функция max () возвращает наибольший из своих аргументов. Об использовании функции ту() и массива @_ будет рассказано ниже.
Данный способ определения подпрограмм не является единственным. Существуют и другие варианты:
П строка, содержащая текст подпрограммы, может быть передана в качестве аргумента функции eval о (см. в части 10); в этом случае компиляция кода подпрограммы осуществляется при каждом вызове функции eval ();