Что такое @INC и %INC в Perl?

Что такое @INC ?

@INC - это специальная переменная Perl. Содержит список имен каталогов, в которых следует искать библиотечные файлы Perl. Этот список используется при подключении модулей с помощью do, use и require.

Первоначально @INC содержит:

  • Список имен каталогов, которые были переданы интерпретатору с помощью ключа
    -I.
  • Список имен каталогов, используемых perl по умолчанию. Содержимое этого списка зависит от платформы, на которой установлен perl.
  • Символическое обозначение текущего каталога - символ точки "."

Вывод:

Использование модуля lib для работы с @INC

lib - это модуль прагмы, которая упрощает работу с @INC . Используется для добавления в @INC новых каталогов на этапе компиляции perl-программы.

Добавление каталогов на этапе компиляции позволяет сделать их доступными в максимально ранний срок, до того как начнутся попытки поиска и подключения модулей.

Запись:

практически идентична записи:

Запись

удаляет указанные каталоги из @INC.

Если подключение каких-либо каталогов с помощью use lib производится в большинстве используемых perl-программ, имеет смысл указать эти каталоги в переменной PERL5LIB.

Переменная окружения PERL5LIB

PERL5LIB - это переменная окружения, которая содержит список каталогов. Perl будет просматривать перечисленные каталоги на предмет обнаружения нужного модуля до того, как обратится к стандартному каталогу библиотек и текущему каталогу.

Список каталогов в PERL5LIB разделяется с помощью символа двоеточия.

Пример:

Что такое %INC ?

%INC - это специальная переменная Perl. %INC содержит одну пару "ключ-значение" для каждого файла, который подключили с помощью функций do, use или require. Ключ - это имя файла. Значение - полный путь к этому файлу.

Нужно учитывать, что подключаемые вами модули могут и сами подключать какие-то дополнительные библиотеки. В этом случае, содержимое %INC может оказаться несколько больших размеров, чем вы ожидали:

Вывод:

Таким образом, можно сказать, что %INC содержит полный список всех подключаемых текущей perl-программой файлов.

Что такое @INC и %INC в Perl?: 1 комментарий

Комментарии запрещены.