Это не совсем то решение, которое вам нужно, но общая идея выглядит так, как показано ниже.
Как решить Cant locate xxxx.pm in @INC path
проблему
По умолчанию perl ищет модули в пути к стандартной библиотеке и в текущем каталоге. Иногда вам нужно использовать некоторые модули, которые устанавливаются в нестандартных местах; Есть несколько способов справиться с этой ситуацией:
Чтобы проверить, находится ли ваш модуль в пути @INC
, используйте.
Пример:
perl -e 'use SOAP::Lite;'
perl -e 'use Error;'
Если вы запустите эти команды в системе, в которой установлены SOAP::Lite
и Error
, Perl просто вернется из этих команд без вывода каких-либо результатов.
Чтобы проверить текущий стандартный путь к библиотеке, используйте:
perl -le 'print foreach @INC'
Если у вас есть административные привилегии, лучшим решением будет установить модуль по любому пути к библиотеке, определенному системой.
Установите переменную среды PERL5LIB
Perl будет искать модули в каталогах, указанных в переменной среды PERL5LIB
, прежде чем искать в стандартной библиотеке и текущем каталоге. Таким образом, вы можете установить эту переменную для поиска ваших модулей.
Пример:
# For unix like systems
PERL5LIB=/home/path/lib:/usr/another/path/lib; export PERL5LIB
Примечание. разделяйте каталоги двоеточием в Unix и точкой с запятой в Windows.
ЕСЛИ вы запускаете свой код из командной строки, используйте параметр -I
. Синтаксис должен быть примерно таким.
perl -I /home/path/lib -I /usr/another/lib script.pl
И вы также можете добавить путь к библиотеке в свой скрипт
Команда для включения пути в ваш скрипт: используйте lib path
.
Пример:
#!/usr/bin/perl
use lib "/home/path/lib";
use lib "/usr/another/lib";
use MyCustomModule;
person
Suvasish Sarker
schedule
14.09.2012