use strict; use warnings; use Data::Dump qw(pp dd); use PadWalker qw/var_name/; sub _ { return var_name(1, \$_[0] ) => $_[0] } sub t_ { _ my $xxx=666 } dd [ t_ ]; # works: ["\$xxx", 666] dd [ _ my $xxx=666 ]; # works: ["\$xxx", 666] dd [ eval '_ my $xxx=666' ]; # fails: [undef, 666]