in reply to Re: Re: Re: Command line tool coding style?
in thread Command line tool coding style?
I actually agree it is sort of JAPHish - that's why I posted it as a question here. I went through thinking about a dispatch table exactly the way you proposed, as I already explained in my reply to chromatic, but it has the same problem as the switch-construct: adding an "action handler" requires maintaining the dispatch table. I could have put the handlers as anonymous subs right into the dispatch table, but then I have to define them before the body of the main program and they're very long. (The biggest one is 2.5 pages of straight-through code without any loops.)
I sort of like your eval proposition, though the idea of circumventing strict in whichever fashion irks me. :-)
Thinking about it some more I think the sole reason it turns JAPHish is the role I have given to new() - that's the single thing I would point out as contrived in retrospect. I wonder if it's possible (and what you'd think) of doing something along the following lines:
#!/usr/bin/perl use warnings; use strict; print "\nfoo script\n\n"; my $action = shift(@ARGV); die "Usage here\n" unless $action; my $handler = can main "_$action"; die "Unknown action '$action'\n\nUsage here\n" unless ref $handler; my %params; GetOptions(\%params, qw(various options here)); # do more stuff with %params here $handler->(\%params); exit; ###################################################################### +## ###################################################################### +## use Getopt::Long; # use Other::Modules::Here; # .. etc ..
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Re: Re: Re: Command line tool coding style?
by perrin (Chancellor) on Jan 16, 2002 at 23:10 UTC | |
by Aristotle (Chancellor) on Jan 17, 2002 at 02:40 UTC |