%dispatch = ( foo => \&foo, bar => \&bar, baz => \&baz, qux => \&qux, ); sub foo {} sub bar {} sub baz {} sub qux {} if( exists $dispatch{ $method } ) { $dispatch{$method}->(); } #### package dispatch; sub foo {} sub bar {} sub baz {} sub qux {} package main; if( my $ref = dispatch->can($method) ) { $ref->(); }