perl -MDevel::Peek -le 'for my $x ([1]->[0]) {Dump $x; $x = pack "I", $x; Dump $x}' # OK perl -MDevel::Peek -le 'my $y=1; for my $x ($y) {Dump $x; $x = pack "I", $x; Dump $x}' # OK perl -MDevel::Peek -le 'sub one(){1} for my $x (one) {Dump $x; $x = pack "I", $x; Dump $x}' # OK perl -MDevel::Peek -le 'for my $x (0+1) {Dump $x; $x = pack "I", $x; Dump $x}' # OK!!! perl -MDevel::Peek -le 'for my $x ("1"."1") {Dump $x; $x = pack "I", $x; Dump $x}' # OK perl -MDevel::Peek -le 'for my $x ("1") {Dump $x; $x = pack "I", $x; Dump $x}' # Error, read-only perl -MDevel::Peek -le 'for my $x (1) {Dump $x; $x = pack "I", $x; Dump $x}' # Error, read-only