in reply to menu script
Someone already pointed out that you need to define your dispatch table a little differently. Your example is creating a hash of scalar references, instead of a hash of subrefs. I won't belabor that point since it's already been made.
I did want to mention that your dispatch table needn't use named subs at all. Consider the following code:
my %dispatch = ( DoThis => sub { print "You asked me to do this.\n"; }, DoThat => sub { print "You asked me to do that.\n"; } );
For trivial subs, defining them inline like this can be a simple, convenient, and readable solution.
Another solution is the switch construct:
SWITCH: for ( @commands ) { m/^This/ && do { print "You asked me to do this.\n"; next SWITCH; }; m/^That/ && do { print "You asked me to do that.\n"; next SWITCH; }; m/^Another/ && Another_Way(); m/^Quit/ && do { print "Goodbye.\n"; last SWITCH; } sub Another_Way { print "You asked me to do it another way.\n"; }
Of course there are other ways to do it as well... This is Perl after all.
Dave
|
|---|