ハードなソフトの話

アクセスカウンタ

zoom RSS TkxまたはPerl/Tkプログラムをコマンドウィンドウなしで実行する

<<   作成日時 : 2009/05/31 15:22   >>

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 2

Perl/TkやTkxで作成したプログラムをWindowsエクスプローラからダブルクリックするとコマンドプロンプトのウィンドウが残ったままになる。しかし、最新版(Perl 5.10.0(Build 1004では)Windowsの[スタート]メニューからPerl Package Managerを実行するとコマンドウィンドウが表示されない。

実は、こんなときのためにActivePerlやStrawberry PerlなどのWin32版にはwperl.exeが用意されている。
ActivePerlに同梱されているPerl Package Manager のショートカットのプロパティを見れば一目瞭然。
画像

ppm.batはtkxを使用したアプリケーションでppm.plをpl2batでバッチファイル化したものである。
ここではバッチファイル化されたperlスクリプトを実行するので -x オプションを使用している。
したがって、.plを実行するのであれば、このオプションは不要である。
wperl.exe は perl.exe と同じ動作をする。ただし、コマンドプロンプトでwperl -v などと入力しても何も表示されない。つまり、コマンド標準出力およびエラー出力が表示されない。

ショートカットを使った例


たとえば、ActivePerlに同梱されているtkx-edをコマンドウィンドウなしで実行するにはショートカットを作成してプロパティの「リンク先」を次のようにする。
C:\Perl\bin\wperl.exe -x C:\Perl\bin\tkx-ed.bat

バッチファイルでラッパーを作る



たとえば、次の内容でwp.batを作成する。
start c:\perl\bin\wperl "%1" %*

コマンドラインで次のように実行する。
wp tkx-hello.pl


wperlに拡張子を割り当てる例


エラーが出力されないので、あまり、お勧めはできないが、.plwという拡張子とwperlを関連づければ、ショートカットを登録しなくても、実行が可能になる。ActivePerl場合、デフォルトでインストールしてあれば、コマンドプロンプトから次の方法で登録できる(Vistaでは管理者権限で実行すること)
まず、wperlプログラムを登録する。
ftype WPerl="C:\Perl\bin\perl.exe" "%1" %*

そして、.plwに関連付ける。
assoc .plw=WPerl


おわりに


wperl.exeの存在があまり知られていない、さらに、拡張子を登録するコマンドの存在が知られていないなど、他人のブログを見て感じることがあったので老婆心ながら記事をまとめてみた。ただし、VBScriptを使ったラッパーの作成やGUIやレジストリを使った拡張子の登録も有効な方法のひとつで非難する気はない。たとえば、バッチファイルはカレントドライブが存在しなければ実行できないし、絶対パスを埋め込むよりは手間がかかってもGUIを使うほうが有効である。また、まれにwperl.exeがインストールされていない環境もある。

参考:

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(2件)

内 容 ニックネーム/日時
通りすがりのものです。
私はperl/tkで作ったプログラムは、par-peckerのpp.batで--guiオプションを指定してEXE化しています。
--guiオプションを指定しているので、DOS窓は表示されません。
Yongren
2010/04/15 17:43
はい、EXE化するときは私もそうしています。
ただし、ppでexe化すると欠点もあります。
- 日本語文字列を含むパスで問題が発生する。
- UNCパスから実行できない(Par::Packerの最新版はできるかも)
にっく
2010/05/19 23:05

コメントする help

ニックネーム
本 文
TkxまたはPerl/Tkプログラムをコマンドウィンドウなしで実行する ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる