Динамическая загрузка упаковки под плак -пе с Starman

StackOverflow https://stackoverflow.com/questions/8813114

  •  26-10-2019
  •  | 
  •  

Вопрос

Я запускаю веб -приложение под Plackup со Starman и пытаюсь динамически загрузить и создавать экземпляры пакеты на основе запросов пользователей. Я использую «Требуй $ PackageName;»; Чтобы загрузить пакет, где $ packageName содержит имя пакета, имена хранятся в файле конфигурации. Затем я выполняю известный набор команд в экземпляре, поскольку все классы наследуют от базового класса и содержат набор известных методов.

Это прекрасно работает в Apache, но по какой -то причине PlackUp говорит, что не может найти пакет, хотя @INC содержит путь библиотеки, а имена пакетов абсолютны из последнего каталога на пути LIB. То есть имя пакета будет базовым :: my :: package.

Кто -нибудь испытает эту проблему? Мне нужно обновить какой -то другой путь в Starman? Я выполняю PlackUp с флагом -i, а также обновляю переменную среды Perl5lib. Я также пытался 'use lib /...' В основном классе приложения, но ни одна из этих работ.

Спасибо

Это было полезно?

Решение

require Примет только имена модулей (например, Scalar :: util), когда они указаны как голые слова. Если вы дадите require Строка, тогда она должна быть относительным путем к модулю (например, Scalar/util.pm). Вы можете обойти это, сделав require внутри eval (строковая параметром форма eval), например eval "require $package".

Видеть Проверьте список модуля, установленного в машине

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top