2016-05-17 61 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 ...