Я хочу иметь возможность использовать модуль, хранящийся в каталоге 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. Я бы предположил, что должен быть какой-то способ обойти это.
Я знаю, что это может быть нетипичный запрос, но мои цели, вероятно, нетипичны. Я просто хочу, чтобы разработчик выполнил проверку и сразу же использовал некоторые сценарии без необходимости запуска каких-либо дополнительных команд или использования диспетчера пакетов.
Спасибо за любое понимание.
EDIT: я обновил полный пример. Я также понял, что если я удалю его через ppm (но оставлю pm в указанном каталоге), мне, возможно, придется изменить свой синтаксис, и я не рассматривал это раньше. Так что, возможно, мне нужно указать полный путь или использовать запрос, например jheddings или предложение BipedalShark (т.е. если он не установлен, то я должен использовать требование и добавить к нему .pm или использовать блок BEGIN.
Если это так, то я не нашел правильный синтаксис.
EDIT 2: Основываясь на комментарии ниже, я понимаю, что у меня может быть ошибочное предположение. Я рассуждаю так: если я напрямую ссылаюсь на фактический код, .pm, то я должен иметь возможность использовать его без использования менеджера пакетов. Может быть, это не так, или если я хочу сделать это, возможно, я должен сделать это по-другому. В качестве альтернативы мне, возможно, придется реорганизовать код в файле .pm.
EDIT 3: я думаю, что неправильно понял несколько вещей. Сообщение об ошибке в моей компиляции IDE не удалось потребовать, это выделение строки, которую я использовал для включения модуля, и сообщение об ошибке консоли Не удается найти загружаемый объект для модуля Win32::Console::ANSI
Я читал это как проблему с загрузкой самого модуля, но, похоже, это проблема, возникающая из-за того, что сам модуль пытается загрузить. Интересно, что это проблема только потому, что я не использовал установку ppm.
Он находит фактический модуль. Я смог убедиться в этом, закомментировав проблемные строки.
Спасибо за помощь, но мне придется потратить на это еще немного времени.