PackageName->can('sub_name'); #### $PAGE = "test_function_a"; eval "$PAGE" if main->can($PAGE); #### my %dispatch = ( 'test_function_a' => \&test_function_a, 'test_function_b' => \&test_function_b, ); foreach my $func ( qw'test_function_a test_function_b' ) { die "Package main doesn't seem able to '$func'" unless main->can($func); $dispatch{$func}->(); }