Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: Re: Re: Re: Re: Command line tool coding style?

by perrin (Chancellor)
on Jan 16, 2002 at 23:10 UTC ( #139287=note: print w/replies, xml ) Need Help??

in reply to Re^4: Command line tool coding style?
in thread Command line tool coding style?

I'd suggest moving the "use Getopt::Long" to the top part, since that's where you actually use the module, and giving the lower section a real package name ("package MyTool" or something). Then instead of this:
my $handler = can main "_$action";
you can have this: this:
my $handler = MyTool->can("_$action");
Easier to follow, in my opinion.

Incidentally, a nice way to code tools like this is to make a separate module that implements all of the real logic, and then a CLI wrapper that just calls that module's methods. Then you can easilly add a GUI, call it from CGI, etc.

Replies are listed 'Best First'.
Re^6: Command line tool coding style?
by Aristotle (Chancellor) on Jan 17, 2002 at 02:40 UTC

    Ops, forgot to move the Getopt::Long when I restructured the code - of course it belongs at the top.

    Good point about the extra package as well - I had a package Logic; and package Utils; at first, but it made the code in Logic awfully bulky if I didn't import all the utility functions. Now that I have a naming convention for the handlers it is quite effortlessly possible to use a package once again - handlers and utility functions can be distinguished quite easily. What's left in main is just the initialization skeleton then.

    I'm well aware of the points to be made for proper modularization (I tend to modularize too much actually - one of them hubris people is me, not a lazy one).

    It is obviously necessary to always remember under which premises one took certain decisions and to go back and reassert them as one simplifies one's code. Thanks for helping me find the proper way. :-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://139287]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2017-06-23 04:33 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (534 votes). Check out past polls.