Функция require()
Функция require()
require [EXPR]
загружает внешние функции из библиотеки Perl во время выполнения. Она используется для того, чтобы сделать библиотеку подпрограмм доступной для любой Peri-программы.
Если параметр EXPR отсутствует, вместо него используется специальная переменная $_.
Если параметр является числом, это соответствует требованию, что для выполнения данного сценария необходим интерпретатор peri с номером версии, не меньшим, чем значение параметра. Таким образом, сценарий, который требует Perl версии 5.005, может иметь в качестве первой строки:
require 5.005;
Более ранние версии Perl вызовут немедленное завершение интерпретатора с выдачей сообщения об ошибке.
Если параметр является строкой, функция require включает в основную программу библиотечный файл, задаваемый параметром EXPR. Логика работы функции require соответствует следующему коду:
sub require {
my($filename) = @_; return 1 if $INC{$filename}; . my($realfilename,$result); ITER: {
foreach $prefix (@INC) {
$realfilename = "$prefix/$filename"; if (-f $realfilename) {
$result = do $realfilename; last ITER; } }
die "Can't find $filename in \@INC"; }
die $@ if $@;
die "$filename did not return true value" unless $result; $INC{$filename} = $realfilename; return $result; }
Замечание
Специальный встроенный массив OINC содержит имена каталогов, в которых следует искать сценарии Peri, подлежащие выполнению в конструкциях do filename, require или use. Первоначально содержит:
• имена каталогов, переданные при запуске интерпретатору peri в качестве параметра ключа -i;
• имена библиотечных каталогов по умолчанию (зависят от операционной системы);
• символическое обозначение текущего каталога ".".
Специальный встроенный хеш-массив % INC содержит по одному элементу для каждого файла, включенного при помощи do или require. Ключом является имя файла в том виде, как оно указано в качестве аргумента функций do или require, а значением — его полное маршрутное имя.