私は現在、PAR Packer(pp)を使用して、いくつかのplスクリプトをパッケージ化して、クライアントがCPANをいじくり回さなくても、マシンにコピーして「正常に動作」できるようにしています。
残念ながら、PARPackerは深い依存関係に対しては機能しません。たとえば、スクリプトはCHI :: Driver :: Fileをインポートしますが、CHI :: Driver::Fileが必要とするLog::Any :: Adapter::Nullを明示的にインポートしません。PARはこの依存関係を取得せず、生成されたスクリプトを実行すると、次のエラーメッセージが表示されてクラッシュします。
Can't locate Log/Any/Adapter/Null.pm in @INC (@INC contains: CODE(0x874aab8) /tmp/par-apache/cache-7b4508ab92efb43271da1629e8eb654c1572cc55/inc/lib /tmp/par-apache/cache-7b4508ab92efb43271da1629e8eb654c1572cc55/inc CODE(0x87e8f54) CODE(0x87e9194)) at (eval 215) line 3.
Compilation failed in require at CHI/Driver/File.pm line 11.
BEGIN failed--compilation aborted at CHI/Driver/File.pm line 11.
私の回避策は、「Log :: Any :: Adapter :: Null」を明示的にインポートすることですが、もっと良い方法があるはずです。おそらくこれはPARPackerのバグですか?最新バージョン(0.994)をインストールしました。