my %dispatch = ( foo => \&A::just_print, bar => \&B::just_print ); if( exists $dispatch{ $user_input } ) { $dispatch{$user_input }->( "hello" ); } else { warn "Unknown user input "$user_input"\n"; }