.
в вашем операторе use lib
означает «текущий рабочий каталог» и будет работать только тогда, когда ваш скрипт запускается из правильного каталога. Идея сервера cwd, вероятно, отличается (или не определена). Предполагая, что каталог библиотеки совмещен со скриптом и закрыт для него, вы хотите сделать что-то вроде этого:
use FindBin;
use lib "$FindBin::Bin/DIR";
Оператор use lib
влияет на @INC
- список местоположений, которые Perl ищет, когда вы use
или require
модуль. Это глобально влияет на текущий экземпляр интерпретатора. На самом деле вы должны помещать use lib
операторы только в скриптах, а не в модулях.
В принципе, вы можете иметь package MyLibs
, который состоит из набора use lib
операторов, а затем use MyLibs
, прежде чем использовать какой-либо из пакетов в этих местах, но я бы не рекомендовал его.