From: Robert Klemme Date: 2008-02-20T22:15:12+09:00 Subject: Re: Is there a clash between gets and ARGV? 2008/2/20, Sebastian Hungerecker : > ycsunil wrote: > > C:\Documents and Settings\sunilc\Desktop>ruby test.rb 'add' > > input something > > test.rb:3:in `gets': No such file or directory - add (Errno::ENOENT) > > from test.rb:3 > > > > Please let me know why is this error coming? > > > Kernel#gets tries to read from the file specified by the command line > arguments if there are any. This is documented (and in some cases useful). > If you don't want this behaviour use IO#gets directly (as in: STDIN.gets). Alternatively the script can be fixed like this: if (ARGV.shift == 'add') puts 'input something' gt = gets puts gt else puts 'fail' end A more complex but also more robust alternative might be to process command line options e.g. with OptionParser. Kind regards robert -- use.inject do |as, often| as.you_can - without end