http://www.perlmonks.org?node_id=439902


in reply to Foreach Loops

What do you think of the following? It needs a package variable of $main::doforeach_index, but providing you don't override this value you can do nested loops galore with an automagic index. Shame it's the wrong way around. I couldn't swap it round, can anyone else?
use strict; sub doforeach (&@) { my $coderef = shift; my $index=0; for (@_) { no strict "vars"; $doforeach_index = $index; &$coderef; $index++; } } sub doforeach_index () { return our $doforeach_index; } doforeach { print doforeach_index . "=$_\n" } ('one','two','three'); #prints... #0=one #1=two #2=three