my %dispatch_table = ( foo => \&foo, bar => sub { mumble; }, ); #### sub generate { my $foo = shift; sub { $foo }; } #### sub callit { my $sub = shift; $sub->(@_); } #### # in a scope . . . local *foo = generate 'bar';