ARGF.getsとSTDIN.getのお話
#! ruby -Ku class Tango #TestMode = "t" if ARGV[0] == "t" #ここに標準入出力から問題数をcountに入れて使いたい。 count = gets.to_i # count = 10 #10問分 puts count elsif ARGV[0] == nil then ExitStatus = 0 #System Quit exit(ExitStatus) end end
ささっと読んでみると、ruby hoge.rb t と打ち込み起動し、その後、キーボードからの入力を待って、入力された数値がcountに入って無事にcountの中身が出力されそうですが、
Tango.rb:6:in `gets': No such file or directory - t (Errno::ENOENT)
from Tango.rb:6
と出てしまいます。
なぜかというと、引数で渡しているtをファイルと勘違いし、tというファイルからgetsしようとしているところにあります。
なので、そんなファイルなんぞありませんぜー とエラーが出ているわけです。
つまりここで何が言いたいのかというと、素のputsはSTDIN.putsで、あんまり意識せずにgetsと書いちゃうと、実はARGF.getsでこんな感じにハマっちゃいますよー みたいな感じです。
なので、
#! ruby -Ku class Tango #TestMode = "t" if ARGV[0] == "t" #ここに標準入出力から問題数をcountに入れて使いたい。 count = STDIN.gets.to_i # count = 10 #10問分 puts count elsif ARGV[0] == nil then ExitStatus = 0 #System Quit exit(ExitStatus) end end
と、STDIN.getsを使うと解決することができました。
ちょっと ビールを飲みつつ書いたので乱文失礼いたしました。