More ways to access arrays
The element number can be a variable.
print "Enter a number :"; chomp ($x=<STDIN>); @names=("Muriel","Gavin","Susanne","Sarah","Anna"); print "You requested element $x who is $names[$x]\n"; print "The index number of the last element is $#names \n";
This is useful. Notice the last line of the example. It returns the index number of
the last element. Of course you could always just do this
this is more efficient. It is an easy way to get the last element, as follows:
print "Enter the number of the element you wish to view :"; chomp ($x=<STDIN>); @names=("Muriel","Gavin","Susanne","Sarah","Anna","Paul","Trish","Simon"); print "The first two elements are @names[0,1]\n"; print "The first three elements are @names[0..2]\n"; print "You requested element $x who is $names[$x-1]\n"; # starts at 0 print "The elements before and after are : @names[$x-2,$x]\n"; print "The first, second, third and fifth elements are @names[0..2,4]\n"; print "a) The last element is $names[$#names]\n"; # one way print "b) The last element is @names[-1]\n"; # different way
It looks complex, but it is not. Really. Notice you can have multiple values separated
by a comma. As many as you like, in whatever order. The range operator
.. gives you
everything between and including the values. And finally look at how we print the last
element - remember
$#names gives us a number ? Simply enclose it inside square brackets
and you have the last element.
Do also note that because element accesses such as
more than one variable, we cannot use the scalar prefix, namely the
symbol. We are accessing the array in list context, so we use the
@ symbol. Doesn't matter that it is not the entire
array. Remember, accessing more than one element of an array but not the entire array is
called a slice. I won't go over the food analogies again.