use strict; my %actions = ( 'y' => \&calcHourly, 'h' => \&calcYearly, 'q' => sub { exit(); }, ); while ( 1 ) { print "\nEnter y (or) h (or) q to calculate Yearly salary(y) or Hourly rate(h) q to Quit: "; chomp( my $myAction = ); if ( exists $actions{ $myAction } ) { $actions{ $myAction }->(); next; } print "\nError: \"$myAction\" is not a valid choice, please try again\n\n"; } sub calcHourly { print "Enter your hourly rate: "; chomp ( my $hourrate = ); my $yearrate = ( $hourrate * 40 ) * 52; print("\nYour Annual salary is: \$$yearrate\n\n"); } sub calcYearly { print "Enter your yearly salary: "; chomp ( my $yearrate = ); my $hourrate = ( $yearrate / 52 ) / 40; print("\nYour hourly rate is: \$$hourrate\n\n"); }