2016-05-17 8 views
0

J'ai créé un script Perl qui inclut le module Switch.Perl PP n'inclut pas Module de commutation

hello_world.pl

use strict; 
use warnings; 
use Switch; 
use Data::Dumper; 

my $var = "Hello World\n"; 
print Dumper($var); 

si je lance perl hello_world.pl tout fonctionne très bien. Mais si je pack mon script avec pp hello_world.pl et que le lancement ./a.out il me rend cette erreur:

 
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 

Répondre

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 

Passer n'a jamais été une bonne idée. C'est un filtre source, ce qui signifie que c'est une astuce astucieuse, mais ne devrait pas être utilisé dans le code de production. Pour cette raison, il a retiré de Perl il y a plusieurs versions.

Je suppose que vous exécutez votre programme empaqueté sur une version plus récente de Perl que la version non emballée - une version qui n'inclut plus Switch.

Vous pouvez installer Switch sur votre système cible ou vous pouvez trouver comment obtenir pp pour inclure le module dans l'emballage. Mais la meilleure solution consiste à réécrire le code pour arrêter d'utiliser Switch.

+0

je reçois le même problème en utilisant YAML 'utiliser YAML' – Bizzy

0

Vous pouvez essayer de forcer les modules à inclure, avec l'option -M:

pp -M Switch -M YAML ...