Buy Text links

Sell text links on your site

FACEBOOK.myspace.com-социальная сеть.Youtube.com-мой канал.Yahoo-мой канал.Yahoo-мой блог.Yahoo blog.
Google Scholar
Web Informer Buttonlose belly fat quicklyView Aleksander Grishkin's profile on LinkedIn wordpress.comPage Rank CheckerBPoster.netГлавная страница сайта.
Разместить на FriendFeedFACEBOOK.
Sign up for a free 30-day trial of HootSuite Pro
HootSuite - Social Media Dashboard
HootSuite - Social Media Management
Social Media Tools for Business
HootSuite - Social Media Tools for Business
HootSuite - Analyze and Grow Your Social Channels
Analyze and Grow Your Social Channels with HootSuite
HootSuite - Improve Your Social Media Efficiency
Глава 1
 

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

Подпрограммы в языке 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 ();

Применение функции eval () и ссылки на анонимную подпрограмму были рассмотрены ранее.

Конструкция do filename вызывает выполнение Peri-программы, содержащейся в файле filename. Если файл filename недоступен для чтения, функ-ция do возвращает неопределенное значение и присваивает соответствующее значение специальной переменной $!. Если файл filename может быть прочитан, но возникают ошибки при его компиляции или выполнении, то функция do возвращает неопределенное значение и помещает в переменную $@ сообщение с указанием строки, содержащей ошибку. Если компиляция прошла успешно, функция do возвращает значение последнего выражения,

Вычисленного В файле filename.

Замечание

Специальная переменная $! служит для хранения сообщения о последней системной ошибке. Такая ошибка возникает при обращении „к операционной системе с запросом на предоставление некоторой услуги, как, например, создание файла, чтение или запись в него.

Специальная переменная $@ 'используется для хранения сообщения, генерируемого при последнем обращении к функциям eval () или do filename,

# файл "l.pl":

#!/usr/bin/perl \ do "2.pi"; \ print "ошибка: $@\n" if $@; do "3.pl"; ' . j print "системная ошибка: $!\n" if $!;

# файл "2.pi":

$x=l;

$y=0;

$z=$x/$y;

print "z= $z\n";

Peri-программа "i.pi", используя конструкцию do filename, пытается выполнить сценарии, содержащиеся в файлах "2.pi" и "З.р1". Первый из них содержит в третьей строке операцию деления на 0, вызывающую появление ошибки во время выполнения программы, а второй вообще не существует. В результате выполнения файла "i .pi" будут выведены следующие сообщения:

ошибка: Illegal division by zero at 2.pi line 3. системная ошибка: No such file or directory

Ключевые слова use и require используются для включения в текущую программу подпрограмм из других модулей.

(Директивы компилятора use и require рассмотрены в части 12 )

 
Hosted by uCoz
Google Scholar
Web Informer Button Web Informer Button