shell - Ruby gets method throws an exception when arguments are passed from the console -


i have experienced odd behavior code below:

require 'csv'  $debug = argv.empty? ? false : argv[0] #global debug flag.  class phonebook   #class code here etc etc end  phonebook.start_dir = "file-io-samples/phonebooks/" puts "enter phonebook!" name = gets #this problem. puts "using #{name}.." 

when pass true have $debug set true on execution error name = gets , have no idea why. if don't pass parameters via command line works fine.

this error output:

c:\pickaxe>ruby phonebook.rb enter phonebook! hurrah! works using hurrah! works ..  c:\pickaxe>ruby phonebook.rb true enter phonebook! exception `errno::enoent' @ phonebook.rb:62 - no such file or directory - true phonebook.rb:62:in `gets': no such file or directory - true (errno::enoent)         phonebook.rb:62:in `gets'         phonebook.rb:62:in `<main>'  c:\pickaxe> 

if need can post class definition, don't think it's part of problem.

gets reads stdin if no arguments passed, , file passed argument otherwise. passing argument true, ergo gets tries read file named true, apparently doesn't exist.

this first sentence of documentation of gets:

returns (and assigns $_) next line list of files in argv (or $*)


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -