野村です。

北島さん、コメントをありがとうございました。
$stdin.scanf("%d") 動きました。標準ライブラリを置き換えて使うことは
考えていなかったのでびっくりしました。

final の戻り値が配列だったのをみて、次のようなやり方もあるなと気がつきました。

>$stdin.read.scan(/[+-]*\s+/)

C のコメントをとってしまうのに、

>ARGF.read.gsub(/\/\*.*\*\/?/, "")

をやってみましたが、gsub の範囲が \n で切れるらしく、複数行にわたる
コメントは消せませんでした。上の方法だとストリームのトークンを一旦
全部配列に取りこんでしまわなければならないので不服ですが、scanf.rb の
中味も読んで研究したいと思います。みなさん、ありがとうございました。

On Tue, 14 Dec 2004 20:02:46 +0900
Masahiro Kitajima <katonbo / katontech.com> wrote:
> 
>  こういう場合は、以下のようにしたいところなのですが...
> 
> irb(main):001:0> require 'scanf'
> irb(main):002:0> $stdin.scanf("%d") {|x| p x}
> 10 20 30 40
> [10]
> ^Z
> => [nil]
> 
>  現状では、これでも最初の要素しか読まないんですよね。
>  これにハマった当時、以下のように scanf.rb の IO#block_scanf を
> すげ替えてしのぎました。
> -- 
> 北島雅博(かとんぼ)

野村朝清