Then, suppose I want to take input from the user and see if the things the user types are keys in the hash. If so, I execute the associated function.%functions = ( '?' => 0, 'HELLO' => sub { print "Hello, world.\n" }, 'HELP' => sub { print "Type 'hello' or 'goodbye'\n" }, 'GOODBYE' => sub { print "Goodbye...\n"; exit(0) } ); # have to initialize this outside declaration of %functions $functions{'?'} = $functions{'HELP'};
My question is this. At the spot to insert the code to execute the function, I would like to do this:while(<>) { $func = $_; chomp($func); $func = uc($func); if( defined($functions{$func}) ) { ### insert code here to execute function in hash ### } else { print "\"$func\" not defined\n"; } }
but perl won't let me. I have found that if I do this:&$functions{$func};
it works. Why doesn't the first work?my $code; $code = $functions{$func}; &$code;
In reply to using a hash of functions by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |