前提の環境:
前々回の記事の実行環境が出来ていること。つまりWindowsのコマンドラインでperlスクリプトが実行できることです。
実行ファイル化:
いちばん簡単なのは、おそらくPerl2Exeを使用することです。さすがに専用プログラムなんでお手軽です。でも私のように「めったに使わないのにシェアウェアにレジストするのもなぁ」という人もいると思います(^^;。以下はそういう人向けに、フリーのPARを使用する方法です。(Perl2Exeを使うとGUI化でうまくいかないという情報もあったので、GUI化を考えている場合もPARがお薦めかも。)
PARのインストールは、上記のサイトから最新のアーカイブ(今の時点ではPAR-0.89.tar.gz)を持ってきてperl Makefile.PL→nmake→nmake installをやるのが正しいんだと思いますが、私は諸般の事情で以下のとおりにインストールしました。
1. Windows用のPARバイナリから、perlの版数に合うものを持ってくる。(現時点で最新のActivePerl 5.8.7build813ならPAR-0.89-MSWin32-x86-multi-thread-5.8.7.par)
2. ファイルの拡張子をparからzipに変更して展開し、出来たファイル全てをC:\Perl\PARに入れる。(ActivePerlのインストール先をデフォルトから変更している場合は以下適宜読み替えてください。)
3. Windowsの環境変数に以下を追加し、再ログインする。
Path に C:\Perl\PAR\scriptを追加
Perl5lib に C:\Perl\PAR\lib を追加
4. CPANからScanDepsのモジュール(現時点の最新はModule-ScanDeps-0.51.tar.gz)を持ってきて展開し、perl Makefile.PL→nmake→nmake installを実行。(ちなみにnmakeはこのあたりにあるので、実行(自己解凍)して出来たファイルをPathの通ったところに置いておけばおっけー。)
5. 以上でコマンドラインから、
pp -o xxx.exe xxx.pl
とか実行するとxxx.exeが作成され、perlが無い環境でも実行可能になるはずです。
GUI化:
Tkを使うとかいろいろ方法はあるようですが、ここではWin32::GUIとWin32::GUI::Loftを使います。
1, Win32::GUIのPPMアーカイブ(Win32-GUI-1.0-PPM-5.8.zip)を持ってきて展開し、以下を実行してインストールする。
ppm install Win32-GUI.ppd
2. Win32::APIのアーカイブ(Win32-API-0.41.tar.gz)を持ってきて展開し、perl Makefile.PL→nmake→nmake install。(素直にppm install Win32-APIでいいかも…。)
3. The GUI Loftのサイトからバイナリ(Loft_binary.zip)を持ってきて展開する。PPMフォルダ以下の2フォルダで、それぞれ以下を実行する。
ppm install Win32-GUI-AdHoc.ppd
ppm install Win32-GUI-Loft.ppd
これでperl側の準備はおしまい。
4. The GUI Loftの実行ファイル(tgl.exe)を実行し、GUIを設計する。使い方は各自勉強してください(笑)。僕も見様見真似なんで。作った結果を例えばxxx.gldとして保存する。
5. Win32::GUI対応にperlのスクリプトを書く。Win32 APIがわからないと書けない…かも。私は全然わからないので、前回のあんな簡単なプログラムでもえらい苦労しました(^^;。書いたスクリプトを例えばxxx.plで保存する。
6. 以下のとおりにPARでコンパイルする。
pp --gui -a xxx.gld -o xxx.exe xxx.pl
これでGUI対応のプログラムが作成される…はず。
参考URL:(多謝)
いやな日記:http://namazu.org/~satoru/diary/20040716.html
http://namazu.org/~satoru/diary/20040717.html
ラクダのステーキ:http://take4.dynsite.net/mt/archives/000019.html
その他Googleでhitしたページ
特にGUI化のほうについては、「いやな日記」さんのサイトにあったサンプルを修正して、無許可でisbn2jan.exeのソース作成に利用させていただいています。まずかったらごめんなさい(^^;。
しかしここまでやっても、出来るのはでかくて(起動が)遅いWindows専用実行ファイル、しかもperlのスクリプト自体もWin32 API専用で書かなければならないという…。素直にVisualなんとかとかDelphiとか勉強して書いたほうがよっぽどいいような気がしてきた(笑)。まぁ面白かったからいいか(^^;。
SET HTTP_proxy=http://プロキシサーバ名:ポート番号
SET HTTP_proxy_user=ユーザ名 (必要ならば)
SET HTTP_proxy_pass=パスワード (必要ならば)
突然で恐縮ですが、お仕事を依頼することは可能でしょうか?
ご返答いただけましたら、幸いです。
この記事にコメントということはPerl関係の話でしょうか? いずれにしてもこのBlogは趣味の範疇で、お仕事は別にあるので残念ながら無理です。
Delphiは開発環境がちょっとアレなので関数型が得意な人は定番のCやJavaですね。