2016-05-17 58 views
0

我创建了一个包含Switch模块的perl脚本。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将模块包含在软件包中。但最好的解决方案是重写代码以停止使用Switch。

+0

我用YAML得到了同样的问题'使用YAML' – Bizzy

0

你可以尝试强行将包含的模块,与-M选项:

pp -M Switch -M YAML ...