EXEファイルに変換する

風呂に入っているときに、ActivePerlに付属しているperl58.dllを直接呼び出して、PerlスクリプトWindowsプログラムのように見せることはできないだろうかと思い立った。
早速、「perl windows dll」でGoogle検索したところ、PerlスクリプトをEXEファイルに変換するPARと言う存在をここから発見した。
もっとよく調べようと「par」でGoogle検索すると、ここに私が使っているバージョンのActivePerl 5.8.7.813のことが紹介されていた。
このバージョンでは、残念ながら複雑なスクリプトでは実行エラーが発生するらしい。
簡単なものなら動くと言うことだったので、取り敢えずインストールして試してみることにした。
試用するためのPerlスクリプトは以下のhello.plである。

print "hello world\n";

インストールは以下の通りでいたって簡単である。

> ppm install PAR

それでは早速EXEファイルに変換して見よう。

> pp hello.pl

> dir *.exe
2006/11/19  01:02            1,398,891 a.exe

UNIXライクにa.exeと言うファイルが出来上がった。
実行すると、見事に「hello world」が表示されたが、起動が遅く、ファイルサイズが大き過ぎるようだ。

比較のために、PARと一緒に紹介されている同じ機能を持ったシェアウェアPerl2Exeを試して見ることにした。
こちらはZIPファイルをダウンロードしてローカルドライブに展開するだけで、インストールの必要は無い。
それでは早速試して見よう。

> perl2exe hello.pl
Perl2Exe V8.80 Copyright (c) 1997-2006 IndigoSTAR Software

This is an evaluation version of Perl2Exe, which may be used for 30 days.
For more information see the attached pxman.htm file,
or visit http://www.indigostar.com

Converting 'hello.pl' to hello.exe

> dir *.exe
2006/06/05  17:04              386,375 hello.exe

PARと違って、変換も早く、EXEファイルのサイズも小さい。
実行すると、

> hello
hello world

This exe file was created with the evaluation version of Perl2Exe.
For more information visit http://www.indigostar.com
(The full version does not display this message with a 2 second delay.)
...

シェアウェアらしく追加のメッセージが表示され、2秒の待ち時間が入っていた。
ActivePerlそのものが無料であることを考えると、一番安いLite Editionでも$49と言うのは、随分と高額だと思わざるを得なかったが、本気なら払っても良いレスポンスであることも確かである。