in reply to subroutine refs

One solution:

{ # start a new scope to keep the effect of "no strict" small no strict 'refs'; $return_value = &$generic_sub(@args); }

Another involves eval:

$return_value = eval("$generic_sub(\@args)"); die $@ if $@;