Иллюстрированный самоучитель по Perl



         

Определение подпрограммы


Подпрограммы в языке Perl играют ту же роль, что и функции в языке С, или процедуры и функции в языке Pascal. Они выполняют две основные задачи:

  • позволяют разбить одну (большую программу на несколько небольших частей, делая ее более ясной для понимания;
  • объединяют операторы в'одну группу для повторного использования. В языке Perl не различаются понятия "подпрограмма" и "функция", эти слова являются синонимами.  
  • Подпрограмма может быть определена в любом месте основной программы при помощи описания

    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 () возвращает наибольший из своих аргументов. Об использовании функции ту() и массива @_ будет рассказано ниже.

    Данный способ определения подпрограмм не является единственным. Существуют и другие варианты:

  • текст подпрограммы может храниться в отдельном файле и загружаться в основную программу при ПОМОЩИ КЛЮЧеВЫХ СЛОВ do, require, use;
  • П строка, содержащая текст подпрограммы, может быть передана в качестве аргумента функции eval о (см. в части 10); в этом случае компиляция кода подпрограммы осуществляется при каждом вызове функции eval ();




    Содержание  Назад  Вперед