Someone explain to me the logic behind ARGV[0]

For example there's a code
lines = File.readlines(ARGV[0])
Why do i need the [0]?

I have another program, testingargv.rb with this code
puts ARGV.join('-')
(no [0] parameter)
if i type in the command prompt, testingargv.rb test 123
the result is test-123

i don't understand the logic behind [0] in
lines = File.readlines(ARGV[0])

thanks guys!

···

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

ARGV is an array. Calling ARGV[0] returns the first argument of the array,
that is the first argument passed on the command line to the ruby script.
Calling ARGV.join('-') returns a string obtained by concatenating the elements
of the array with a - between each two of them.

The line

lines = File.readlines(ARGV[0])

assumes that the first parameter passed to the script on the command line is
the name of the file, so ARGV[0] contains the name of the file and
File.readlines(ARGV[0]) returns an array of the lines contained in that file.

For more information, see ri Array# and ri Array#join

Stefano

···

On Saturday 18 December 2010 19:12:57 Kaye Ng wrote:

For example there's a code
lines = File.readlines(ARGV[0])
Why do i need the [0]?

I have another program, testingargv.rb with this code
puts ARGV.join('-')
(no [0] parameter)
if i type in the command prompt, testingargv.rb test 123
the result is test-123

i don't understand the logic behind [0] in
lines = File.readlines(ARGV[0])

thanks guys!

"Why do i need the [0]?"

The [0] just accesses the first member of the array, like for any other
array.

···

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

...

For example there's a code
lines = File.readlines(ARGV[0])
Why do i need the [0]?

I have another program, testingargv.rb with this code
puts ARGV.join('-')
(no [0] parameter)
if i type in the command prompt, testingargv.rb test 123
the result is test-123

i don't understand the logic behind [0] in
lines = File.readlines(ARGV[0])

thanks guys!

ARGV is an array. Calling ARGV[0] returns the first argument of the array,

...

This naming and usage stems back to the C programming language. There, argv is the conventional name for any command line arguments to the program, and it denotes an array of c-style strings. Elements of an array in C are accessed by a (0-based) index. Hence argv[0] gets the first argument value, argv[1] the second, and so on.

HTH,

Alec

···

In message <4C1A26450D42B303@smtp205.alice.it>, Stefano Crocco <stefano.crocco@alice.it> writes

On Saturday 18 December 2010 19:12:57 Kaye Ng wrote:

--
Alec Ross

Just in case it's not clear enough for him (Kaye ng)...

In C argv[0] is the name of file being executed and argv[1] is the
actual "first" argument.
In Ruby ARGV[0] is like argv[1] in C, the actual first argument.

Play around a bit with a script like this.

p ARGV
ARGV.each_with_index do |x,y|
  puts "#{y} - #{x}"
end

Abinoam Jr.

argv.rb (155 Bytes)

···

On Tue, Dec 21, 2010 at 7:45 PM, Alec Ross <alec@arlross.demon.co.uk> wrote:

This naming and usage stems back to the C programming language. There, argv
is the conventional name for any command line arguments to the program, and
it denotes an array of c-style strings. Elements of an array in C are
accessed by a (0-based) index. Hence argv[0] gets the first argument value,
argv[1] the second, and so on.

HTH,

Alec
--
Alec Ross