It seems to me that you basically want something like App::Sequence. You could look at how it does what it does. Personally, I'd use a separate namespace for all user commands, but you can also use the main:: namespace and call the functions in it:
#!perl -w use strict; sub hello { print "Hello $_\n" for @_ }; sub bye { print "Goodbye $_\n" for @_ }; my $namespace = \%main::; my ($command,@args) = @ARGV; if (! exists $namespace->{$command}) { warn "Unknown command '$command'. Valid commands are:\n"; for (sort keys %$namespace) { if (defined *{$namespace->{$_}}{CODE}) { warn "$_\n"; }; }; die "$0 stopped.\n"; } else { my $code = $namespace->{$command}; $code->(@args); }; __END__ Q:\>perl -w tmp.pl x Unknown command 'x'. Valid commands are: bye hello tmp.pl stopped. Q:\>perl -w tmp.pl hello Foo Hello Foo Q:\>perl -w tmp.pl bye Foo Goodbye Foo Q:\>
In reply to Re: dynamic perl calls
by Corion
in thread dynamic perl calls
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |