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
Negative indexing
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[0]; # victoria_sponge
print $cakes[1]; # chocolate_gateau
print $cakes[2]; # carrot
This article was originally posted on PerlTricks.com.
Tags
David Farrell
David is a professional programmer who regularly tweets and blogs about code and the art of programming.
Browse their articles
Feedback
Something wrong with this article? Help us out by opening an issue or pull request on GitHub