まったく知らないことに出くわしたのでメモ。
Rubyで小物ツールを作っていたわけですが…
first_arg = ARGV[0]
とかやって引数を読み込むのはよくやってました。
また、
input = gets
などとして、入力待ちにしといて何か入力させるのも、処理内容を確認させるときなどにこれまでもときどき使ってました。
で、両方同時につかうと、エラーに。
`gets': No such file or directory
きょとんとしてしまいました。
どうやらgetsはARGF.getsの略で、引数をファイル名とみなしたものを取りに行くのがデフォルトの動作だそうです。そして、引数がない場合にはじめて標準入力を対象とするんだとか。知らんかった…。
input = STDIN.gets
などとして、明示的に標準入力を指定してあげると、期待通りの動作をしてくれました。