From: Robert Klemme Date: 2008-09-25T03:29:48+09:00 Subject: Re: Strange ruby problem On 24.09.2008 16:18, christoforever@gmail.com wrote: > So i've cut the program down to about 4 lines to give the idea of > whats going on: > > num = ARGV[0] > num2 = ARGV[1] > puts " #{num} #{num2} \n" > line = gets > > > if i give the program some input from the command line it fails and > sais " gets: No such file or directory -1" > yet if i supply no input the program goes straight to gets. This seems > fairly strange to me. Though when I did this: > > num = ARGV[0] > num2 = ARGV[1] > puts " #{num} #{num2} \n" > STDOUT.flush > line = STDIN.gets > > everything works normal. Why is this and whats going on? Thanks in > advance As others have said: arguments are the problem. "gets" tries to read from ARGF which is basically all ARGV values interpreted as files and concatenated as streams. You typically use this for poor man's cat: ruby -e 'ARGF.each {|line| puts line}' foo bar baz You can avoid the issue by doing num = ARGV.shift num2 = ARGV.shift puts num, num2 line = gets Cheers robert