Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

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]
[stevieb]: Playing around with two DACs to control a single RGB LED (each DAC only has two outputs, LED has 3 inputs), and have realized that each of my IC RPi dists needs a wiring diagram, which is linked to within the documentation

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2017-08-20 19:25 GMT
Find Nodes?
    Voting Booth?
    Who is your favorite scientist and why?

    Results (317 votes). Check out past polls.