野村です

なかださん、コメントをありがとうございました。
STDIN.scanf を irb で試してみました。

irb> require 'scanf'
irb> begin
irb> a = $stdin.scanf("%d")
irb> b = $stdin.scanf("%d")
irb> puts a, b
irb> end
10 20 30 40^D
10
irb>

となって、1つのストリームは一回しかスキャンしてくれないようです。
ストリームの汎用のスキャナがなぜ欲しいかと言うと、コンソールからの
データ入力時に、

A B C
D E F

も

A B
C D
E F

も同じように

for i in 1..n
  for j in 1..m
    a[i][j] = $stdin.gettoken(/.../).to_f
  end
end

で取りこめるためデータ入力周りのコードを簡素化できるからです。また HTML
をいじるようなプログラムでも<tag> ... </tag> の部分を行に関係なく統一
された方式で抜きだすことができます。もちろん gettoken のようなメソッドは
gets を利用しても作ることができますが、標準のスキャナがあれば、Ruby 
プログラムのデータ入力部分の記述が非常に簡単になるのではないかと思います。

On Tue, 14 Dec 2004 10:41:21 +0900
nobu / ruby-lang.org wrote:


> At Thu, 9 Dec 2004 18:37:02 +0900,
> Tomokiyo Nomura wrote in [ruby-list:40389]:
> 
> 正規表現での指定はできませんが、IO#scanfというものはあります。
> 
>   $ ruby -rscanf -e 'p STDIN.scanf("%d %s")'
>   10 xdfa
>   [10, "xdfa"]
> 
> -- 
> --- 僕の前にBugはない。
> --- 僕の後ろにBugはできる。
>     中田 伸悦

                                                    野村朝清