http://qs321.pair.com?node_id=257641


in reply to Re: URL linking within script
in thread URL linking within script

I downvoted this post because it's wrong. Please test your advice if you're not sure:

#!/usr/bin/perl -w use strict; sub foo { print "foo\n" } my $f = 'foo'; &$f;

I generally prefer a dispatch table:

my %ops = ( one => \&one, two => \&two, ); my $op = $q->param( 'op' ); die "Invalid operation '$op'\n" unless exists $ops{ $op }; $subs{ $op }->();

You can also mess with can, though it's less secure -- with the ops hash you can control exactly which subs can ever be called.

my $op = $q->param( 'op' ); my $sub = __PACKAGE__->can( $op ); die "Invalid op '$op'\n" unless $sub; $sub->();