Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: "use"ing from dynamic namespace

by samtregar (Abbot)
on Dec 01, 2008 at 17:43 UTC ( #727164=note: print w/replies, xml ) Need Help??


in reply to "use"ing from dynamic namespace

Maybe not important to you, but that won't work if your client code needs both Foo::Module and Bar::Module. The BEGIN block will only be run once. (And the code you posted doesn't work period since __PACKAGE__ is "Base::Module" in this case, not Foo::Module or Bar::Module!)

Instead I think I'd have the base class define an init() method which the sub-classes call in a BEGIN:

   BEGIN { __PACKAGE__->init() }

The code in init() could do roughly what you have in your BEGIN block, but I might make it a bit more configurable by using a method to get the config class name and defining that in each sub-class:

   sub config_class { "Foo::Config" }

You could have a default implementation of that method in your base class that does the namespace manipulation.

Does that make sense?

-sam

Replies are listed 'Best First'.
Re^2: "use"ing from dynamic namespace
by dsheroh (Prior) on Dec 01, 2008 at 18:42 UTC
    (And the code you posted doesn't work period since __PACKAGE__ is "Base::Module" in this case, not Foo::Module or Bar::Module!)

    Oops... Guess that makes it obvious that I hadn't actually tested this yet other than with the Base version...

    Does that make sense?

    Yep!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://727164]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2020-07-05 21:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?