GUI とか面倒くさくて作ってらんないけど、ファイルオープンとかはダイアログ使えたら便利だよね。
て思ってググったらサクっと見つかったのでテスト。
動作確認は ActivePerl で、UTF8N のソースコードで行った。
Win32:FileOp と Data::Lazy を CPAN とか ppm とかでインストール。
この2つのモジュールにはバイナリは含まれてないので、CPAN からダウンロードした書庫ファイルから FileOp.pm と Lazy.pm をそれぞれ Win32 と Data ディレクトリに保存するだけでも動作する。
パラメータはリファレンスで渡す。
defaultfilter は filters で指定した何番目のフィルターをデフォルトとするか。 1 が先頭 で 0 スタートでは無いので注意。
「名前を付けて保存」 のダイアログもあって、それは OpenDialog の部分を SaveAsDialog に置き換えるだけ。 パラメータとかは同じ。
OpenDialog() も SaveAsDialog() もファイルが選択されたら、そのファイルのフルパスが帰ってきて、キャンセルされたら undef が帰る。
ダイアログが扱う文字コードは Shift_JIS なので、ダイアログに渡す文字列は encode('cp932', ~) して渡して、受け取った文字列は decode('cp932', $filename) して扱う。
他人が使うツール作ったけど、ファイル指定とかコマンドプロンプト開くのにカレントディレクトリの説明とか cd とかドライブ変更とかクソ面倒な場合にはかなり有効な手段なんじゃないかなと。
ちなみにフォルダ選択の BrowseForFolder もあるし、他にも色々あるので CPAN を見てみると良いかも。
Win32::FileOp (
http://search.cpan.org/~jenda/Win32-FileOp-0.14.1/FileOp.pm )