in reply to Call to subs in a Dispatch Table

You could have the first subroutine call the second one (simpler solution, but perhaps not really what you need), or you could store store in the result entry of your hash a reference to an array of subroutines. Perhaps something like this (untested, because of insufficient information):
my %general = ( data => sub { info( who=> $q->param('who') || '', why=> $q->param('why') || '', ) }, results => [ sub { names( first => $q->param('first'), zip => $q->param('zip'), ) }, sub { info( who => $q->param('who') || '', why => $q->param('why') || '', ) }, ] );

Je suis Charlie.