Perl のスクリプトをexe形式に変 「PAR」

PARPerlで作成したスクリプトWindowsで実行可能なexe形式のファイルに変換するためのツール。

PARのインストール

PPMを利用したインストールが可能。2006/8/3現在、Ver0.90がインストールされる。
なお、PARのサイトによると直近のバージョンは0.942であるようだが、まあ気にしないことにする。

ppm> install PAR

PARによる変換

以下のようにすることで hoge.pl が hoge.exe に変換される。詳細は perldoc を参照。

pp -o hoge.exe hoge.pl

pp はスクリプトの実行に必要なモジュールを自動検出するが、自動検出に失敗した場合は、以下のように明示することも可能。

pp -o hoge.exe -M Modeule::Foo hoge.pl

手持ちのスクリプトを変換してみたところ、以下のようなエラーが出力された。

C:\Perl\bin\pp: Binary 'hoge.pl' sure doesn't smell like perl source!
C:\Perl\bin\pp: Please try a perlier file!

原因は不明だが、ソースの先頭に記述していた日本語コメント(20行程度)を削除したところ問題なく動作した。

PARの仕組み

いやな日記より。

PAR は次のような仕組みで動いている。

  • 必要なファイルをすべて実行ファイルにパックして、
  • 実行時にそれらをテンポラリディレクトリにすべて展開し、
  • 実行ファイルにパックした Perl インタプリタの DLL を使って実行する

このため、起動時にファイルを展開する時間が少々かかる。Crypt::SSLeay のように、実行時に ssleay32.dll (OpenSSL) などの DLL が必要なモジュールを使う場合には、pp 実行時に -l ssleay32 のように指定すれば、DLL も一緒にパックされる。実行に必要な設定ファイルなども -a でパックできる。

前述のとおり、Perl インタプリタの DLLを実行ファイルにパックするため、hello world だけでも1.7MBほどになり、実行にも1秒ほどかかった。