次のように、ARGF.read(len) から読み込もうとしたときに、引数にファイル
を指定しても標準入力から読もうとするようです。

% echo zzz > zzz
% ./ruby -ve '  
while s = ARGF.read(4096)
  p s
end' zzz
ruby 1.9.0 (2004-10-07) [i686-linux]
"zzz\n"
(ここで標準入力からの入力待ちになる)

これは意図的な挙動でしょうか?

また、次のように ARGF.read(len) が "" を返すこともあるようです。

% ./ruby -ve '
while s = ARGF.read(2)
  p s
end' zzz
ruby 1.9.0 (2004-10-07) [i686-linux]
"zz"
"z\n"
""
(ここで標準入力からの入力待ちになる)
-- 
[田中 哲][たなか あきら][Tanaka Akira]