ruby に関する質問です。

コマンドライン引数とリダイレクトをあわせるとうまくいかないようです。

temp.1 というファイルに

inu
neko
tanuki

をいれて
t.rb に
puts ARGV
while gets
puts $_
end
というスクリプトを書きます。

cat temp.1 |ruby t.rb

inu
neko
tanuki

と出力されます。

cat temp.1 |ruby t.rb 1
とすると

t.rb:2:in `gets': No such file or directory - 1 (Errno::ENOENT)
from t.rb:2

なります。

引数があると、リダイレクトは受けとれないのでしょうか?


回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/01/27 15:40:23
  • 終了:2008/01/29 08:47:51

ベストアンサー

id:Bookmarker No.1

しおり回答回数191ベストアンサー獲得回数342008/01/27 15:58:12

ポイント60pt

gets の使い方を間違っているだけです。

組み込み関数 - Rubyリファレンスマニュアル:

gets([rs])

readline([rs])

Ruby インタプリタ実行時に引数として与えられたファイル(なければ標準入力)をつなげた仮想的なファイル(組み込み変数 $< や ARGF でアクセスできる) から一行読み込んで、文字列を返します。


標準入力だけから入力したいなら、gets ではなく $stdin.gets などとする必要があります。

id:isogaya

ばっちりです。ありがとうございました。

2008/01/27 18:49:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません