Odd Problem with Command Line Args

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

···

--
Posted via http://www.ruby-forum.com/.

Alex Ciarlillo wrote:

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??

···

--
http://xtargets.com

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

···

On Dec 19, 2006, at 10:27 AM, Alex Ciarlillo wrote:

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?

Check out the doucmentation on gets method with: ri Kernel#gets

···

On 12/19/06, Alex Ciarlillo <ac251404@ohio.edu> wrote:

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

--
Posted via http://www.ruby-forum.com/\.

how i use ruby with sesssion of this?

···

2006/12/19, Chunyun Zhao <chunyun.zhao@gmail.com>:

Check out the doucmentation on gets method with: ri Kernel#gets

On 12/19/06, Alex Ciarlillo <ac251404@ohio.edu> wrote:
>
> 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
>
> --
> Posted via http://www.ruby-forum.com/\.
>