From: James Edward Gray II Date: 2006-01-05T00:26:45+09:00 Subject: Re: gets bug? On Jan 4, 2006, at 9:17 AM, Shea Martin wrote: > > > if ARGV.size > 0 > puts "first arg is #{ARGV[0]}" > end > puts "enter text" > ans = gets > puts "you said #{ans}" > > > Run this code, as ./test.rb. Then run it with an command line arg, > like "./test.rb -x". And you will get an error like this: > > "test.rb:3:in `gets': No such file or directory - -x > (Errno::ENOENT)" > > The fix I have found, is to change gets to $stdin.gets. I saw some > traffic on the mailing list archives regarding this, but no > resolution. > > Is this expected behaviour? Yes it is. Kernel.gets() reads from files specified as command-line options or STDIN, if none were given. This makes it easy to write Unix-style filters. You can always shift the option out of ARGV before calling gets() with something like: if ARGV.first == "-x" ARGV.shift # ... end Hope that helps. James Edward Gray II