in reply to get name of lexical variable

Just an idea, don't know if it might work:

You could use PadWalker to sniff your caller's lexicals and see if the reference address of any of them is equal to the reference you've got.

Replies are listed 'Best First'.
Re^2: get name of lexical variable
by ysth (Canon) on Jul 12, 2009 at 18:03 UTC
    PadWalker provides a var_name function that takes the reference and does that for you. It's even more reliable than looping over the lexicals, when the lexical you want is hidden:
    #!/usr/bin/perl -l use strict; use warnings; use PadWalker ":all"; sub foo { my $x; for ($x) { my $x; bar(\$_); } } sub bar { print var_name(1, $_[0]); # works my $vars = peek_my(1); print grep $vars->{$_} == $_[0], keys %$vars; # doesn't work unle +ss 2nd my $x is commented out } foo();