-ダウンロード

人気の秘密を探るべくRubyでいろいろ書いてみる第一弾としてはダウンロードとインストールが必要です。
Googleで「ruby」とだけいれると、http://www.ruby-lang.org/ja/ がトップに表示されます。様子から察するにここが日本語本拠地サイトのようです。様々なユーザー環境に応じてのバイナリの配布・インストール方法について記述されています。私の場合は、手軽なのはWindows環境です。Windowsプラットホームについても、Cygwin、mswin32、mingwとありますが、VC++によるWin32一般的な構築をされたというmswin32の最新安定版1.8.2のバイナリをダウンロードしました。
インストールガイドのmswin32バイナリの項(http://www.ruby-lang.org/ja/install.cgi?cmd=view;name=mswin32+%28%A5%D0%A5%A4%A5%CA%A5%EA%29)に従ってインストール。私は手元PCの都合よりD:\にダウンロードしたディストロのZIPを展開しました。あとで直すかもしれませんが、D:\ruby1.8.2\というフォルダにしています。D:\ruby1.8.2\binにPATHを通しました。
grep0サンプルを、D:\ruby1.8.2\work\grep0.rbとして保存。

$pat = ARGV.shift
while gets
   print if /#{$pat}/
end

を実行。。。どうやって?ということで先を読み進める。。。理解。

hoge
gefu
fugu
guru
rune

という、hoge.txtを用意して、同じく、D:\ruby1.8.2\work\hoge.txtとする。

D:\ruby1.8.2\work>ruby grep0.rb fugu hoge.txt

とコマンドライン実行。。。はい、動作しました。

fugu

と、ここまでやって難しいなぁとおもったのですが、たぶんそれは早計。私はRubyだけでなく、Perlも書けないからそう感じるのでしょう。ちょっと前提知識が足りないみたい。私はもっぱらWindowsプラットフォームでC、VBDelphiJavaという順でコードが書けるようになりました。このときつらかったのがCからVBのところですが、そのあとはそれぞれ似てるので差分でOK。でもRubyに似たものは私のスキルのストックには無いんですよ。。。ちなみに、PHPも経験無いんで書けません。意外や意外。文系学部で麻雀ばかりしてたのでLispとかも名前以外は見たこと無い。。。SQLとかHTMLとかは書けるんですが。。。これまでの人生では貯金がないって感じ?
その後、理解が深まる。

D:\ruby1.8.2\work>ruby grep0.rb hoge.txt fugu

とすると、エラー。なるほど〜、ロジックを追うとそうなるように書かれているが、これでわかったこと。「ARGV」は、「ruby grep0.rb fugu hoge.txt」のとき、「fugu hoge.txt」というように格納されていること。また、ARGV.shiftは、java.util.Stack#pop()のような動きである、と。そして何気なく入力して驚く。

D:\ruby1.8.2\work>ruby grep0.rb fugu hoge.txt hoge.txt

結果は

fugu
fugu

これはgetsの仕様ですね。

Ruby インタプリタ実行時に引数として与えられたファイル(なければ標準入力)をつなげた仮想的なファイル(組み込み変数 $< や ARGF でアクセスできる) から一行読み込んで、文字列を返します。
Rubyリファレンスマニュアル

あとは残りの「print」組み込み関数の仕様を読む。「$_」ね。なるほど理解した。