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!

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

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

In message [email protected], Stefano C.
[email protected] writes

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

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

“Why do i need the [0]?”

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

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.