# change the starting index -- usually not a good idea.
$[ = 2;
# create a sample array
@data = qw(one two three four);
# try to find the last index value
$bad = @data - 1;
$still_bad = scalar @data - 1;
$good = $#data;
# what did we find?
print "bad: $bad\n"; # gives 3
print "still bad: $still_bad\n"; # gives 3
print "good: $good\n" # gives 5
So I would recommend two things:
- Don't change the starting index value without a very good reason.
- Use the $#array_name syntax if you really need the last index value. (Usually, you want the last element, and can just use the negative subscript technique mentioned above.)
Trying to debug someone else's code when they've changed $[ can be particularly annoying. |