use warnings; use strict; my $_parse_element_configuration = sub{ print "element_configuration: @_\n" }; my $handler = "_parse_element_configuration"; my $self=42; #--- dispatch table my %parser; $parser{_parse_element_configuration}=$_parse_element_configuration; my $meth=$parser{$handler}; $self->$meth(666); #--- lex sym ref via eval $meth= eval "\$$handler"; $self->$meth(777); #--- abstracted sub handle { my $name=shift; return eval "\$$name"; } handle($handler)->($self,888);