From: Joe Williams Date: 2009-04-25T08:47:00+09:00 Subject: Re: ARGV, STDIN and gets ARGV.shift works perfectly, should have thought of that. Thanks! -Joe Joel VanderWerf wrote: > Joe Williams wrote: >> I am running into an issue where I have a script that takes two >> command line arguments and reads from stdin. It seems that gets is >> not getting to stdin because it is hitting ARGV first >> (http://www.ruby-doc.org/core/classes/Kernel.html#M005996). Is there >> a way around this so that I can pass in arguments and listen on stdin >> as well. Running the script without args works perfectly. What I am >> doing currently looks something like the following: >> >> var1 = ARGV[0] >> var2 = ARGV[1] >> var3 = gets >> >> Any advice would be helpful. >> >> Thanks. >> -Joe > > Kernel#gets reads from ARGF, which, if there's anything in ARGV, is > read from those files. So you can clear from ARGV first, if you want > the option of passing your file as the 3rd arg instead of stdin. > > $ cat tt.rb > var1 = ARGV.shift > var2 = ARGV.shift > var3 = gets > p [var1, var2, var3] > > $ cat data > this is some text > $ ruby tt.rb foo bar data > ["foo", "bar", "this is some text\n"] > $ ruby tt.rb foo bar > type some input > ["foo", "bar", "type some input\n"] > -- Name: Joseph A. Williams Email: joe@joetify.com Blog: http://www.joeandmotorboat.com/