sub call_function { my $funcname = shift; my $package = caller(); my $qfuncname = "${package}::$funcname"; no strict 'refs'; exists(&$qfuncname) or die("no such function $qfuncname\n"); return &{$qfuncname}(@_); } sub f { print "f\n"; } call_function('f'); call_function('g');