#!/usr/bin/perl use strict; use warnings; my $sub = 'do_this'; { no strict "refs"; print $sub->("Fred"); } sub do_this { my $var = shift; return "My name is $var"; } sub do_that { my $var = shift; return "My name is not $var"; } __END__ My name is Fred #### #!/usr/bin/perl use strict; use warnings; my %dispatch_table = ( do_this => sub { my $var = shift; return "My name is $var"; }, do_that => sub { my $var = shift; return "My name is not $var"; }, ); my $sub_name = 'do_this'; print $dispatch_table{$sub_name}("Fred"); __END__ My name is Fred