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 ...
Другие вопросы по тегам