池澤といいます。

小波さんから詳細解説あったので、いまさらですが・・・書いてたので

> ちなみに、このやり方でループを作成するとdatファイルが奇数行しかないと
> エラーが出るという考え方でよろしいでしょうか?
> (datファイルを奇数行にして実行してみると確かにエラーが出ました。その原因は
> whileに与えた line=f.gets が偽になるからですか?)

ファイルが奇数行のときのふるまいを理解するのに、irbでやってみました。
(Windowsです)
既にるびきちさんからxmpfilterというツールが紹介されていますが、小波さん
も言われているirbも「確かめツール」としては良いかなと思います。

#--以下 cmd.exe実行画面----------------------------------------------
>type q.dat
1
2
3

>irb --simple-prompt
>> f = open("q.dat")
=> #<File:q.dat>
>> while line = f.gets
>> p line
>> end
"1\n"
"2\n"
"3\n"
=> nil
>> p f.gets
nil
=> nil
>> nil.chomp
NoMethodError: private method `chomp' called for nil:NilClass
        from (irb):6
>> f.close
=> nil
>> exit

>
#------------------------------------------------

・q.datの全ての行を読み込んだ後getsすると、「もうみんな読んじゃって、読
み込むべき行なんてありませーん」とnilが返る。
・nil.chompしようとするから「nilにはchompなんていうメソッドはありませー
ん」というNoMethodErrorが返る

みたいですね。・・・多分

irbでやってみるとよく分かることが多くて、勉強になります。
確信持てないとき 何はともあれ irb とかです。

Ruby独学は特殊なことではなく、聞いてみると「それ普通じゃね?」みたいです
よ。私も独学ですが、独学とはいえruby-listもあるし、勉強会とかでいろいろ
教えてもらえたりします。お互いがんばりましょう。

あっ、るびきちさんの『Ruby逆引きハンドブック』も辞書のように使わせてもらっ
てますです。