Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Setting up helper objects in App::Cmd

by tobyink (Abbot)
on Sep 25, 2012 at 10:21 UTC ( #995523=note: print w/replies, xml ) Need Help??

in reply to Setting up helper objects in App::Cmd

I'd generally name my modules things like:

  • MyApp::Command::Foo
  • MyApp::Command::Bar
  • MyApp::Lib::Foobar
  • MyApp::Lib::Database

And instead of loading library modules at compile time with use MyApp::Lib::Database, defer loading to run-time (with require MyApp::Lib::Database) inside your command's execute method. This means that you can avoid loading up database connections, etc when the user is just running, say, myapp help. Load them only once they're needed.

PS: a release using this technique is P5U.

perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Replies are listed 'Best First'.
Re^2: Setting up helper objects in App::Cmd
by McA (Priest) on Sep 25, 2012 at 11:22 UTC

    Hi Tobyink!

    Once again thank you for your reply. A ++ for that.

    When I need to do some module initialization for EVERY command. Is there a place/method to do so? Especially when I do initialization work based on the global options. I don't like the idea of doing the same thing, like

    require SomeLib; SomeLib->init();
    in every command's execute method.

    Best regards

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995523]
[mark4]: thanks. I installed "PAR-packager" and pp is working. BTW, it is pp.bat that was needed.
[mark4]: Sorry, There was a typo in my last message. I installed "PAR-Packer" and I now have a pp.bat and all is working well. Thanks again for your help.

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (6)
As of 2018-01-19 21:31 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (223 votes). Check out past polls.