Упаковщик PAR не включает пользовательские модули

У меня есть Perl-скрипт test.pl, который включает еще один Perl-модуль fact.pm, который находится в каталоге crypt/Module. исходный код crypt/test.pl:

#!/usr/bin/perl
use Term::ANSIColor qw(:constants);
use File::Path;
use POSIX qw(strftime);
use File::Basename qw(dirname);
use Cwd  qw(abs_path);
use lib dirname(dirname abs_path $0);
use crypt::Module::fact qw(factorial);

&factorial();#function present in fact.pm
print("Thanks for that thought \n");

Дана команда упаковщика PAR:

pp -M Module::fact -o test test.pl

при копировании только исполняемого теста по другому пути к каталогу и его выполнении я получаю следующую ошибку:

Can't locate crypt/Module/fact.pm in @INC (you may need to install the crypt::Module::fact module)

как можно включить модуль в исполняемый файл?


person Shreyas Bhargav    schedule 01.03.2016    source источник


Ответы (1)


Во-первых, я бы рекомендовал использовать параметры -c и/или -x для утилиты pp, которые используется «для определения дополнительных зависимостей во время выполнения». Я привык пользоваться обоими.

Хотя вы используете опцию -M для добавления модуля, я думаю, что у вас есть опечатка с этой опцией. В вашем коде вы используете модуль «crypt::Module::fact», но вы указываете модуль «Module::fact» с опцией -M. Возможно, если вы использовали «-M crypt::Module::fact» вместо «-M Module::fact», ваша проблема может быть решена.

Кроме того, вам может понадобиться использовать -I (или -lib), чтобы указать путь к любым дополнительным каталогам библиотек модулей.

person dasgar    schedule 07.03.2016