$ perl -E ' #use strict; use warnings; { my $i; for $i (1,2,3) { say $i; } say $i // "undefined"; } { for my $i (1,2,3) { say $i; } say $i // "undefined"; } { for $i (1,2,3) { say $i; } say $i // "undefined"; } { my $i = q{completely different $i}; for $i (1,2,3) { say $i; } say $i // "undefined"; } ' 1 2 3 undefined 1 2 3 undefined 1 2 3 undefined 1 2 3 completely different $i