The section of Apocalypse 2 'Other Decisions About Variables' states:
"$#foo is gone. If you want the final subscript of an array, and [-1] isn't
good enough, use @foo.end instead."
Here is an example where -1 is not good enough:
# this perl 5 code...
foreach $index (0..$#array) {
do_something($index, $array[$index]);
}
# becomes this perl 6 code
foreach $index ([EMAIL PROTECTED]) {
do_something($index, @array[$index]);
}
The paticular use of $# above got me thinking... Is there any reason that
'keys' (and 'each' and 'values' for that matter) couldn't also "do the right
thing" if given an array instead of a hash?
'keys' would return a list of the index numbers equivalent to (0..$#array).
'each' would return an index number, value pair.
'values' would return a list of the values in the array (for consistency).
(since we're dealing with an array, the results would be returned in array
order.)
# proposed
foreach $index (keys @array) {
do_something($index, @array[$index]);
}