Как я могу установить модуль Perl, доступный только для моего идентификатора пользователя?
Мне нужно установить несколько модулей Perl для моих скриптов Perl. Однако эти модули недоступны на серверах, на которых я хочу запускать сценарии. Я также не хочу связываться с серверными каталогами библиотеки. Я думаю, что это можно сделать, манипулируя переменной "@INC". Мне нужно знать, как установить новые модули, используя cpan и альтернативный @INC.
В качестве альтернативы может также иметь смысл объединить мой собственный двоичный файл / среду Perl с моим скриптом. Есть идеи?
2 ответа
Подробный ответ можно найти здесь: http://www.devdaily.com/perl/edu/articles/pl010015
Короткий ответ, поместите ваши модули, скажем, /home/face429/perlmodules
, то в вашей программе на Perl используйте: use lib '/home/face429/perlmodules';
,
Чтобы проверить, был ли этот путь включен в @INC
Использование вы можете распечатать @INC
,
Ваш текущий каталог является частью пути поиска Perl.
perl -V
покажет вам содержимое @INC, которое включает в себя "." (текущий каталог) в конце.
Обратите внимание, что ваш текущий каталог - это именно тот каталог, а не каталог, в котором находится ваш скрипт. Если это запустить на веб-сервере, он легко сломается.
Вы также можете добавить конкретный путь, поставив use lib '/your/perl/modules'
в ваш сценарий, как объяснил favoretti.
Наконец, вы можете добавить путь для всех ваших скриптов через переменную окружения PERLLIB
так что вам не нужно use lib
в каждом сценарии.
PERLLIB=/your/perl/modules
или же SET PERLLIB = C:/your/perl/modules
в винде.