Perl Packager でスクリプトを集約
久々にPerl でちょっとしたスクリプトを書いたのですが、実際にスクリプトを使ってもらう方がエンジニアでは無い為「cpan でモジュールインストールとかよく分からない」などという事が。
思うところもある場面だったので、pp(Perl Packager)でスクリプトと依存モジュールをまとめて一つのスクリプトに集約してみました。
基本的に以下の手順でOK
$ pp -p source.pl
$ par.pl -b -Opacked.pl a.par # 集約されたpacked.pl が生成される
$ perl packed.pl # 普通にスクリプトを実行可能
pp は基本的にモジュールの依存関係を判別してくれるらしい・・けどどうもお漏らししているっぽい。
そういう時は、-M[モジュール名]の形式で、手動でモジュール名を指定してあげると良い
$ pp -p source.pl
$ par.pl -MJSON::XS -b -Opacked.pl a.par # JSON::XS を組み込む
しかしどうも生成されたスクリプトの実行に失敗する。
サンプルのJSON::XS はCで書かれているためか。pure perl なモジュールじゃないと厳しそうだ。
とりあえず僕の遭遇した例では、特に性能を要求される場面では無かったし、どのような環境で動かすか決定していなかった為下手にバイナリくっ付けられても嬉しくない可能性があった為、pure perl なJSONモジュールで代替した。
$ pp -p source.pl
$ par.pl -MJSON -MJSON::backportPP -b -Opacked.pl a.par