in reply to how do foreach and while affect an array?

Looping over an array does not actually change it's contents (as far as I know, maybe there are some special arrays).
use Data::Dumper; @arr = (1,2,3); print Dumper(\@arr); foreach $i (@arr) { # not doing or changing anything here. } print Dumper(\@arr);
Shows that the array contents have not been changed. The same should hold for while loops.

Update: I guess I will mention that in PHP there are loop counters that you sometimes have to reset each time you want to iterate over an array. I don't know of anything like that in Perl though. Maybe that's where this question came from.