Я владелец инструмента, написанного на Perl и Java.Один из сценариев использует такие модули, как JSON
и Data::Dumper
.Моя среда и мои @INC
знают, где находятся эти модули.Но у пользователя, использующего мой инструмент, есть ошибка:
Can't locate JSON.pm in @INC (@INC contains: <PATHS> .) at /tools/bin/myscript.pl line 15.
Я понимаю, как работает @INC
, и мне просто интересно, как правильно решить эту проблему.Мы работаем в одной компании (в разных регионах), поэтому у пользователя есть права доступа к области, в которой находятся эти модули.С моей стороны, сценарии работают нормально, потому что мой @INC
содержит путь к области с этими модулями.
Из предыдущих тем я узнал, что могу установить PERL5LIB
с областью, которая содержит (не рекурсивный) пакет.Но эта проблема кажется недостаточно хорошей, потому что тогда мне придется указать несколько путей (поскольку JSON и Data :: Dumper не находятся в одной области и PERL5LIB
проверяет модули в каталоге, но не рекурсивно).
Кроме того, из предыдущих потоков я узнал, что я могу запустить perl -I myscript.pl
, но это не помогает, потому что мой инструмент в основном Java, который выполняет Perl.Более того, я предпочитаю ничего не менять в самом скрипте, а в среде пользователя.
Каким был бы способ решения такого рода проблем?Есть ли способ «протолкнуть» путь к @INC
из Linux?Как предотвратить подобные проблемы в будущем?