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と言うのは、随分と高額だと思わざるを得なかったが、本気なら払っても良いレスポンスであることも確かである。