>perl -wMstrict -MData::Dumper -le "my @array = qw(A B C); $_ = 'foo'; print qq{before foreach loop:}; print Dumper $_, \@array; foreach (@array) { print qq{in foreach loop before while loop: \$_ is $_}; { local $_; while () { print; } } print qq{in foreach loop after while loop: \$_ is }, defined() ? $_ : 'UNdefined' ; } print qq{after foreach loop:}; print Dumper $_, \@array; __DATA__ " before foreach loop: $VAR1 = 'foo'; $VAR2 = [ 'A', 'B', 'C' ]; in foreach loop before while loop: $_ is A in foreach loop after while loop: $_ is A in foreach loop before while loop: $_ is B in foreach loop after while loop: $_ is B in foreach loop before while loop: $_ is C in foreach loop after while loop: $_ is C after foreach loop: $VAR1 = 'foo'; $VAR2 = [ 'A', 'B', 'C' ];