use strict; our $a="func"; sub func {print shift}; { no strict 'refs'; &$a(42); } #### my %dispatch=( func1 => sub { print shift }, func2 => sub { print 1+ shift }, ); $dispatch{func1}->(42);