in reply to Automatic Loop Counter not in perl
One thing I don't like about your proposed variable is that as far as I can see, you'd have to do additional assignment of the $LOOPCOUNTER variable if you want to nest loops.
I prefer the way more "functional/OO" languages like javascript and ruby implement foreach loops using callbacks with explicit parameters. Something that's easy to implement in perl for fullblown objects:
If perl's prototypes would work for methods, you could build something very close to ruby's$list->foreach( sub { my ($element,$index) = @_; print "$index $element\n"; });
list.each_with_index { |element,index| print "#{index} #{element}\n" };
For completeness, here's the javascript version:
Note that ruby & javascript's versions also have the advantage of being easily overridable for any object (including "standard arrays", since both allow methods to be attached to objects instead of only to "object types" / classes - and, of course, in both languages arrays are always "real" objects).array.forEach(function(element,index) { document.write(index+" "+element+"\n"); // depending on the host });
updated: fixed typo, slight cleanup of wording.
In Section
Meditations