Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
perl.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
388.1 Кб
Скачать

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

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

sub demo_sub

{

print "demo_sub called\n";

}

&demo_sub; # вызов подпрограммы

В данном случае инструкции образуют подпрограмму, названнуюdemo_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);

Библиотека подпрограмм

В противоположность языку С, Perl фактически не поддерживает концепцию библиотеки. Тем не менее, в нем имеется механизм,позволяющий скриптам использовать исходный код из другого файла.Например, предположим, что вы храните подпрограмму add_valuesl вфайле под именем addvalue.pl. Используя инструкцию require, другой скрипт на языке Perl может получить доступ к той подпрограмме, как показано ниже:

require "addvalue.pl";

print &add_values(10,11);

Вы можете представлять себе инструкцию require как аналогоператора #include препроцессора языка С. Чтобы найти файл исходных кодов, Perl сначала ищет в каталоге, определенном по умолчанию для библиотеки языка Perl (подробности можно уточнить в инструкции по инсталляции), а затем в текущем каталоге. Можно также использовать абсолютный или относительный путь, к которому добавлено имя файла. Perl запоминает, какие файлы были затребованы операторомrequire, и загружает их только один раз даже в случае многочисленных обращений к этим файлам. Имеется много стандартных библиотек, которые расширяют возможности языка Perl. Сейчас самое время побродить по каталогу, в котором хранятся библиотечные файлыязыка Perl, чтобы получить представление о тех возможностях, которые они предлагают.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]