You can, but you don't want that, because it makes it too easy to use other subroutines in your script. You want to use a table mapping the names to your subroutines like this ("dispatch table"):
sub report { print "Reporting"; }; sub add { print "Adding"; }; sub frobnicate { print "Frobnicating"; }; my %allowed_actions = ( report => \&report, add => \&add, frobnicate => \&frobnicate, ... ); sub handle_form { my $query = CGI->new(); my $default_action = 'report'; my $action = $query->param('action') || $default_action; # Sanity check if (not exists $allowed_actions{$action}) { warn "Unknown action >>$action<< attempted. Forcing to '$defau +lt_action' instead."; $action = $default_action; }; my $code = $allowed_actions{$action}; # Now, call the code $code->($query); };
In reply to Re: Pass the Subroutine Name in form action value
by Corion
in thread Pass the Subroutine Name in form action value
by gopalr
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |