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



         

Определение подпрограммы - часть 2


  • анонимную подпрограмму можно определить при помощи ссылки на нее (см. в части 9).
  • Применение функции 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 )

     




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