in reply to Preserve array contents in for() loop

I prefer making copies as they are needed, rather than all at once:
for (@a) { my $b = $_; # Or do a deep copy, if necessary $b *= 2; }
For making a temporary array, I like this idiom, though there's no performance reason to prefer it to any other:
for my $b (map $_, @a) { $b *= 2; }
others prefer
for my $b (@{[@a]}) {

Caution: Contents may have been coded under pressure.