2016-05-17 6 views
0

Я создал скрипт perl, который включает в себя модуль Switch.Perl PP не включает модуль коммутатора

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 он возвращает мне эту ошибку:

 
Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: CODE(0x7fb2631e6a88) /var/folders/rb/2b5sbs355n57svwzjjh7cb9c0000gn/T/par-6967676c6f62616c33/cache-710e967842eb844ab8d6fe5f46968c1b6f49e019/inc/lib /var/folders/rb/2b5sbs355n57svwzjjh7cb9c0000gn/T/par-6967676c6f62616c33/cache-710e967842eb844ab8d6fe5f46968c1b6f49e019/inc CODE(0x7fb262988de0) CODE(0x7fb262989930)) at script/hello_world.pl line 3. 
BEGIN failed--compilation aborted at script/hello_world.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, чтобы включить модуль в пакет. Но лучшим решением является переписать код, чтобы остановить использование коммутатора.

+0

я получаю ту же проблему с помощью YAML 'использовать YAML' – Bizzy

0

Вы можете попытаться заставить модули должны быть включены, с -M вариант:

pp -M Switch -M YAML ...