Find the index of the last element in an array
Most Perl programmers know that to find the size of an array, the array must called in a scalar context like this:
# Declare the array my @numbers_array = (41,67,13,9,62); # Get the array size my $size_of_array = @numbers_array;
This understanding can lead to programmers applying a scalar context to an array to access its last element (subtracting 1 because arrays are zero-based).
print $numbers_array[@numbers_array - 1]; # 62
The last-index variable
Perl has a ‘last-index’ variable for arrays ($#array_name).
print $#numbers_array; # 4 print $numbers_array[$#numbers_array]; # 62
The last index operator ($#array_name) also works on arrayrefs if you insert an extra dollar sigil:
my $arrayref = [41, 67, 13, 9, 62]; print $#$arrayref; # 4 print $$arrayref[$#$arrayref]; # 62
Perl provides a shorter syntax for accessing the last element of an array: negative indexing. Negative indices track the array from the end, so -1 refers to the last element, -2 the second to last element and so on.
# Declare the array my @cakes = qw(victoria_sponge chocolate_gateau carrot); print $cakes[-1]; # carrot print $cakes[-2]; # chocolate_gateau print $cakes[-3]; # victoria_sponge print $cakes; # victoria_sponge print $cakes; # chocolate_gateau print $cakes; # carrot
This article was originally posted on PerlTricks.com.
Something wrong with this article? Help us out by opening an issue or pull request on GitHub