#!perl -w use strict; sub do_foo { print "Foo with $_[0]"; }; sub do_bar { print "Bar with $_[0]"; }; my %dispatch = ( foo => \&do_foo, bar => \&do_bar, ); my $method = rand > 0.5 ? 'foo' : 'bar'; $dispatch{ $method }->('Test');