Ruby 初心者スレッド Part 37

このエントリーをはてなブックマークに追加
735デフォルトの名無しさん
質問なのですが、

引数でファイルが指定されていたら中身をデータとしてよみこむか、
そうでなく標準入力があるならその中身を読み込むか、
どちらもないなら、デフォルトのデータを読みたい(__DATA__以下など)場合に

str = (ARGF || DATA).read
p str

みたいに書いてたのですが、ARGFはnilにはいらないみたいですし、
ファイルの指定がなくて標準入力からの入力になった場合に、入力待ちになり停止してしまいます。
標準入力がない場合はスルーして、DATAから読む方法はないものでしょうか?