just recently I got bitten by trying to nest two while (each ) on the same hash, because the iteration-pointer is tied to the hash
If you do not change the hash in the loop, you can use your own iterator like that:
sub hash_iterator {
my %h = @_;
return sub {
each %h;
}
} # make_iterator
my %test = (k1 => 'v1',
k2 => 'v2',
k3 => 'v3',
'k-last' => 'v-last');
my $it1 = hash_iterator(%test);
my $it2 = hash_iterator(%test);
while(<>){
print join ':',($it1->())[0,1];
print ';',join ':',($it2->())[0,1];
print ' - ',join ':',($it2->())[0,1];
print "\n";
}
|