>perl -wMstrict -le "for (qw(zik zok)) { print qq{for before: '$_'}; foo('wilma'); print qq{for after: '$_' \n}; } ;; sub foo { local $_ = 'fred'; sub { local $_ = 'XXX'; goto &bar; }->(@_); } ;; sub bar { my ($passed) = @_; print qq{gone from foo, passed = '$passed', \$_ = '$_'}; } " for before: 'zik' gone from foo, passed = 'wilma', $_ = 'fred' for after: 'zik' for before: 'zok' gone from foo, passed = 'wilma', $_ = 'fred' for after: 'zok' #### sub foo { for (qw(fred pebbles)) { sub { for (qw(hoo ha)) { goto &bar; } }->(@_); } }