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:\>
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|