Odd Problem with Command Line Args

A

Alex Ciarlillo

For some reason when using command line arguments to specify input
files, whenever I use 'gets' it seems to be reading from the argument
files instead of STDIN.

My code is something like this (simplified):

<code>

emp_file = ARGV[0]
inp_file = ARGV[1]
out_file = ARGV[2]

print "Please enter the first date of the pay period (MM/DD/YYYY): "
date = gets
puts date
exit

</code>

Now instead of allowing me to type a response it is just spitting out
the first line of the file that is given by ARGV[0]. In this case the
file is a list of 3 digit numbers and just spits out "###\n" and exits
without allowing me to type anything. Any ideas on why this is
happening? Do I need to clear 'gets' or something?
Thanks
 
B

Brad Phelan

Alex said:
For some reason when using command line arguments to specify input
files, whenever I use 'gets' it seems to be reading from the argument
files instead of STDIN.

My code is something like this (simplified):

<code>

emp_file = ARGV[0]
inp_file = ARGV[1]
out_file = ARGV[2]

print "Please enter the first date of the pay period (MM/DD/YYYY): "
date = gets
puts date
exit

</code>

Now instead of allowing me to type a response it is just spitting out
the first line of the file that is given by ARGV[0]. In this case the
file is a list of 3 digit numbers and just spits out "###\n" and exits
without allowing me to type anything. Any ideas on why this is
happening? Do I need to clear 'gets' or something?
Thanks

I've seen a similar problem and I got around it by using $stdin explcitly

date = $stdin.gets


It might work??
 
T

Tom Pollard

For some reason when using command line arguments to specify input
files, whenever I use 'gets' it seems to be reading from the argument
files instead of STDIN.

My code is something like this (simplified):

<code>

emp_file = ARGV[0]
inp_file = ARGV[1]
out_file = ARGV[2]

print "Please enter the first date of the pay period (MM/DD/YYYY): "
date = gets
puts date
exit

</code>

Now instead of allowing me to type a response it is just spitting out
the first line of the file that is given by ARGV[0]. In this case the
file is a list of 3 digit numbers and just spits out "###\n" and exits
without allowing me to type anything. Any ideas on why this is
happening?

It sounds like Ruby reproduces Perl's magical treatment of the
commandline args. (Input is taken from the files listed on the
command line, unles stdin is redirected.)

Perhaps you need to clear the ARGV array after reading the values
out? For instance, use

emp_file = ARGV.shift
inp_file = ARGV.shift
out_file = ARGV.shift

instead of what you had above.

TomP
 
J

juan pedro meriño

how i use ruby with sesssion of this?

2006/12/19 said:
Check out the doucmentation on gets method with: ri Kernel#gets

For some reason when using command line arguments to specify input
files, whenever I use 'gets' it seems to be reading from the argument
files instead of STDIN.

My code is something like this (simplified):

<code>

emp_file = ARGV[0]
inp_file = ARGV[1]
out_file = ARGV[2]

print "Please enter the first date of the pay period (MM/DD/YYYY): "
date = gets
puts date
exit

</code>

Now instead of allowing me to type a response it is just spitting out
the first line of the file that is given by ARGV[0]. In this case the
file is a list of 3 digit numbers and just spits out "###\n" and exits
without allowing me to type anything. Any ideas on why this is
happening? Do I need to clear 'gets' or something?
Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,825
Latest member
VernonQuy6

Latest Threads

Top