Что такое @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-программой файлов.

One thought on “Что такое @INC и %INC в Perl?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*