Я хочу иметь возможность использовать модуль, хранящийся в каталоге lib моего репозитория исходного кода, и я хочу, чтобы единственное предварительное условие для разработчика, чтобы использовать сценарии, которые я пишу, - это наличие стандарта Установка Perl, но я не уверен, как это сделать.
В моих скриптах у меня есть
use FindBin qw($Bin);
use lib "$Bin/lib"; # store non standard modules here
use Term::ANSIColor;
use Win32::Console::ANSI;
print Term::ANSIColor::colored("this should be in color\n", "bold red");
и я вставил модуль в ./lib. Я проверил, что это фактическое место, где существует модуль (переименовав его и вызвав сбой). Тем не менее, даже если модуль находится в произвольном каталоге lib, по-прежнему требуется, чтобы ppm знал о модуле.
Я не могу заставить свои скрипты найти / использовать его в lib, если он не был "установлен" ppm первым. Я полагаю, что должен быть какой-то способ обойти это.
Я знаю, что это может быть нетипичная просьба, но мои цели, вероятно, нетипичны. Я просто хочу, чтобы разработчик сделал оформление заказа и немедленно использовал некоторые сценарии, не выполняя некоторые дополнительные команды или не используя менеджер пакетов.
Спасибо за понимание.
РЕДАКТИРОВАТЬ: Я обновил с полным примером. Я также понял, что если я удаляю его через ppm (но оставляю pm в указанном каталоге), возможно, мне придется изменить свой синтаксис, и я не рассматривал это раньше. Поэтому, возможно, мне придется указать полный путь или использовать require, например, jheddings или BipedalShark propose (то есть, если он не «установлен», тогда я должен использовать «require» и добавить к нему «.pm» или использовать блок BEGIN.
Если это так, то я не нашел правильный синтаксис.
РЕДАКТИРОВАТЬ 2: Исходя из комментария ниже, я понимаю, что у меня может быть ошибочное предположение. Я рассуждаю так: если я ссылаюсь непосредственно на фактический код, «.pm», я могу использовать его без менеджера пакетов. Может быть, это не так, или если я хочу сделать это, может быть, я должен сделать это по-другому. В качестве альтернативы мне может потребоваться рефакторинг кода в «.pm».
РЕДАКТИРОВАТЬ 3: Я думаю, что я неправильно понял несколько вещей. Сообщение об ошибке в моей среде IDE «Компиляция не удалась по требованию», выделение строки, которую я использовал для включения модуля, и сообщение об ошибке консоли «Не удается найти загружаемый объект для модуля Win32 :: Console :: ANSI»
Я читал, что это проблема загрузки самого модуля, но, похоже, это проблема, возникающая из-за того, что сам модуль пытается загрузить. Интересно, что это только проблема, поскольку я не использовал установку ppm.
Находит фактический модуль. Я смог убедиться в этом, комментируя проблемы.
Спасибо за помощь, но мне придется потратить еще немного времени с ней.