Приглашаем посетить
Екатерина II (ekaterina-ii.niv.ru)

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

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

Как и все структурированные языки программирования, Perl поддерживает под­программы. Подпрограмма может быть определена с помощью ключевого слова sub , как показано ниже:

sub demo_sub

      {

            print “demo_sub called\n”;

       }

& demo _ sub ;                            # вызов подпрограммы

В данном случае инструкции образуют подпрограмму, названную d emo _ sub . Для вызова подпрограммы скрипт помещает знак амперсанда (&) перед именем под­программы. При вызове подпрограммы в языке Perl скобки могут быть опущены.

Вы можете разместить подпрограмму где угодно в пределах исходного кода скрипта, потому что Perl проанализирует весь исходный текст перед тем, как начать вы­полнение скрипта. Можно объявить подпрограмму в исходном коде сразу после первого использования подпрограммы ( forward reference ).

Подпрограммы могут иметь аргументы и возвращать значения. Следующий фраг­мент кода содержит подпрограмму с именем show _ value , которая выводит значе­ние, полученное подпрограммой в качестве параметра:

           

            sub show_value

                {

                        print ‘The value id ’, $_[0];

                 }

            & show _ value (1001);

Формально подпрограмма языка Perl не объявляет переменных для хранения ар­гументов. Вместо этого в подпрограмму передается переменная типа массив с именем @_, которая содержит значения параметров. В свою очередь, подпрограмма по­лучает доступ к значениям аргументов, используя следующие обозначения для элементов массива: $_[0], $_[1], и т. д. Однако такой способ передачи параметров может ухудшать читаемость кода, и поэтому большинство подпрограмм исполь­зуют копирование аргументов в локальные переменные.

Аналогично предыдущему примеру, следующая подпрограмма show _ fwo _ values выводит значения двух параметров:

sub show_two_values

            {

                        print ‘Первый параметр ’, $_[0], “\ n ”;

                        print ‘Второй параметр   ’, $_[0], “\ n ”;

            }

&show_two_values(1001, 2002);

Наконец, следующая функция show _ all _ values выводит значения всех параметров, ко­торые она получает. Функция использует массив для определения числа параметром:

sub show_all_values

            {

                        for ($i = 0; $i < @_; $i++)

                             {

                                    print ‘Parametr ’, $i, ‘ is ’, $_[$i], “\n”;

                             }

                        }

& show_all_values(1001,2002,3003,4004);

Как было сказано, подпрограммы Perl могут возвращать значения. Для этого ис­пользуется инструкция return . В противоположность языку С, Perl не требует обя­зательного использования инструкции return . Если подпрограмма не содержит ин­струкцию return , то в качестве возвращаемого значения будет взято последнее оцененное выражение. В следующем примере складываются два параметра и воз­вращается результат:

sub add_values

    {

            return $_[0] + $_[1];

     }

print ‘The result is: ’, &add_values(1001,2002);

Назад | Оглавление | Далее