in reply to Complex dispatch table

If your commands all have a shell like syntax, you could do something like:
my %commands = ( name => { args => 2, usage => 'name arg1 arg2', sub => 'sub_1', # might wanna allow for code refs here :) }, ); my @cmd = split /\s+/, $command; if ($commands{$cmd[0]}) { my $sub = $commands{$cmd[0]}{sub}; if ($#cmd == $commands{$cmd[0]}{args}) { $self->$sub(@cmd); } else { print "usage: ..." } } else { print "unknown command $cmd[0]"}
Of course then there are still things like quoted strings and command lists. I have code to parse these things, but it is still in alfa-testing/major-rewriting fase :s -- it will be in CVS in about two weeks, on CPAN in a month or so - deo volente
--
Jaap Karssenberg || Pardus (Larus)? <pardus@cpan.org>
>>>> Zoidberg: So many memories, so many strange fluids gushing out of patients' bodies.... <<<<