in reply to $# -variable?
You don't need to use the word scalar in places where it is already in a scalar context. The following are all equivalent:
for (my $i=0; $i<scalar(@arr); $i++) for (my $i=0; $i<@arr; $i++) for (my $i=0; $i<=$#arr; $i++) for my $i (0..$#arr)
The last one, of course, is the easiest to read by far. Unless you don't need the actual index. In that case, a foreach loop can be used.
foreach my $item (@arr)
The difference between the last two is that loops of the form for (expr0..expr1) are very efficient. They are implemented as counting loops, which means the list isn't flattened in memory. foreach (@array), on the other hand, makes a copy of the array before the loop starts.
|
|---|