"You are correct - a foreach loop builds a temporary list, and iterates over that." #### my @list = (1,2,3,4,5); foreach (@list) { print $_."\n"; push @list,$_.$_; }