作者: 閑舎
日時: 2006/9/14(13:42)
wtnabe@... (ねこ丸) さん wrote.

>   同じような要求を
> 
>                    クロスプラットフォームでやりたい
> 
>   と私は思っています(^^; 思っているだけであんまり実際には行動してないん
> ですが。

それはありますね。私も基本的に Linux ですから、Windows へそのまま持って
いければ話が簡単なわけで。

今回、日本語で正規表現が使えないとまずい、ドラッグアンドドロップ程度の簡
単な操作でファイル入出力ができないとまずい、簡単に作成・使用の環境が構築
できる、という条件でざっと見てみると、exerb がよさげだったので試してみま
した。

が、どうもドラッグアンドドロップでファイルを取得するところでこけてしまい
ました。デスクトップに置いたファイルにちょっとした処理を施して別名で保存
すれば終わりなんですけどね……。

で、実行形式化を早くもあきらめ(^^;、ruby(mswin32版) を入手して C:\ruby 
に置き(Windows 版はそんなにかさばらず、インストールも簡単だし)、

test.bat
c:\ruby\bin\ruby.exe c:\ruby\test.rb %1 > "c:\Documents and Settings\raku\デスクトップ\foo.txt"

test.rb
lines = ""
io = open(ARGV[0])
while io.gets
  lines = lines + sprintf("%4d %s", $., $_)
end
io.close
puts lines

として、test.rb を test.bat へドラッグアンドドロップ、

   1 lines = ""
   2 io = open(ARGV[0])
   3 while io.gets
   4   lines = lines + sprintf("%4d %s", $., $_)
   5 end
   6 io.close
   7 puts lines

を得ました。今のところ、これに正規表現処理を加え、あと少しいじったら十分
なので、exerb いじる手間より、バッチファイルで妥協したほうが得策かな。

Linux の KDE 環境だと test.bat を以下のようにちょっと書き直し、

test.sh(700)
#!/bin/sh
/usr/bin/ruby /home/raku/Desktop/test.rb $1 > /home/raku/Desktop/foo.txt

test.rb は全く同じで、test.rb を test.sh へドラッグアンドドロップし、同
じ出力を得ました(ruby のスクリプトはクロスプラットフォームだけど、全体的
処理がクロスプラットフォームといえるか不明……)。

--
本田博通(閑舎)
テキストとスクリプトの http://www.rakunet.org/TSNET/