0

Switchモジュールを含む perl スクリプトを作成しました。

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すると、次のエラーが返されます。

@INC で Switch.pm が見つかりません (Switch モジュールをインストールする必要がある場合があります) (@INC には次が含まれます: CODE(0x7fb2631e6a88) /var/folders/rb/2b5sbs355n57svwzjjh7cb9c0000gn/T/par-6967676c6f62616c33/cache-710e967842eb844ab8d6906f91 lib/var/folders/rb/2B5SBS355N57SVWZJJH7CB9C0000GGN/T/PAR-6967676C6F62616C33/CACHE-710E967842EB84444AB8D6FE5F4696968C1B49E019/INC(0.019/INC)FLACRID9/FLACRIST(
BEGIN が失敗しました -- script/hello_world.pl 行 3 でコンパイルが中止されました
4

2 に答える 2

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 が含まれていないバージョン) で実行していると思われます。

ppターゲット システムに Switch をインストールするか、モジュールをパッケージに含める方法を考え出すことができます。しかし、最善の解決策は、Switch を使用しないようにコードを書き直すことです。

于 2016-05-17T09:30:01.190 に答える
0

オプションを使用して、モジュールを強制的に含めることができ-Mます。

pp -M Switch -M YAML ...
于 2016-05-17T19:46:55.533 に答える