$ perl -wE 'sub meth { return (@_, q{A}); } my $o = bless {}; my $x = q{meth}; say $o->$x;' main=HASH(0x10053ad8)A $ perl -wE 'sub meth { return (@_, q{A}); } my $o = bless {}; my %x = (a => q{meth}); say $o->$x{a};' syntax error at -e line 1, near "$x{a" Execution of -e aborted due to compilation errors. $ perl -wE 'sub meth { return (@_, q{A}); } my $o = bless {}; my %x = (a => q{meth}); say $o->{ $x{a} };' Use of uninitialized value in say at -e line 1. $ perl -wE 'sub meth { return (@_, q{A}); } my $o = bless {}; my %x = (a => q{meth}); say $o->${\$x{a}};' main=HASH(0x10053ad8)A