Perl PP не включает модуль Switch
Я создал Perl-скрипт, который включает в себя Switch
модуль.
hello_world.pl
use strict;
use warnings;
use Switch;
use Data::Dumper;
my $var = "Hello World\n";
print Dumper($var);
если я запускаю perl hello_world.pl
все отлично работает Но если я упакую свой сценарий с pp hello_world.pl
и чем запустить ./a.out
это возвращает мне эту ошибку:
Не удается найти Switch.pm в @INC (возможно, вам необходимо установить модуль коммутатора) (@INC содержит: CODE(0x7fb2631e6a88) / вар / папки / гь /2b5sbs355n57svwzjjh7cb9c0000gn/T/ п-6967676c6f62616c33/ кэш-710e967842eb844ab8d6fe5f46968c1b6f49e019/ вкл /lib /var/folder /rb/2b5sbs355n57svwzjjh7cb9c0000gn/T/par-6967676c6f62616c33/cache-710e967842eb844ab8d6fe5f46968c1b6f49e019/inc CODE(сценарий 0x7ffl_world_030) pl line 3
2 ответа
$ corelist Switch
Data for 2016-05-09
Switch was first released with perl v5.7.3, deprecated (will be CPAN-only) in v5.11.0 and removed from v5.13.1
Переключатель никогда не был хорошей идеей. Это фильтр исходного кода, который означает, что это хитрый трюк для вечеринки, но не должен использоваться в производственном коде. По этой причине он удалил из Perl несколько версий назад.
Я подозреваю, что вы запускаете упакованную программу на более свежей версии Perl, чем на неупакованной версии - той, которая больше не включает Switch.
Вы можете установить Switch в вашей целевой системе или узнать, как получить pp
включить модуль в комплект. Но лучшее решение - переписать код, чтобы прекратить использование Switch.
Вы можете попытаться принудительно включить модули, -M
опция:
pp -M Switch -M YAML ...