$ perl -we'@foo = 1..10; for (@foo) { delete $foo[10-$_] } print scalar @foo' 5 $ perl -we'@foo = 1..10; for (my @bar=@foo) { delete $foo[10-$_] } print scalar @foo' 0 $ perl -we'@foo = 1..10; for (@foo,()) { delete $foo[10-$_] } print scalar @foo' Use of freed value in iteration at -e line 1.