use strict; use warnings; $| = 1; # auto flush stdout sub more { print "more()\n" } sub fallover { print "fallover()\n" } sub leave { print "Bye!\n"; exit; } my %cmdhash = ( fun => \&more, laugh => \&fallover, exit => \&leave, ); print "Welcome to johns fun house\n"; while (1) { print " : "; my $command=<>; chomp $command; if (my $func = $cmdhash{$command}) { $func->(); } else { print "I'm afraid I don't know how to \"$command\"\n"; } }