Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: How to import names from a dynamically required module

by tobyink (Abbot)
on Oct 02, 2012 at 22:06 UTC ( #996925=note: print w/ replies, xml ) Need Help??


in reply to How to import names from a dynamically required module

if (eval "require $package_name; 1") { $package_name->import(qw/method1 method2 method3/); }

It's often a good idea to lift imports to compile-time using a BEGIN block.

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


Comment on Re: How to import names from a dynamically required module
Select or Download Code
Re^2: How to import names from a dynamically required module
by jds17 (Pilgrim) on Oct 02, 2012 at 22:20 UTC
    Thank you very much, tobyink, I was not aware of the fact that one could call import on package names as in your example. This solved my issue.

      This is not specific to import; it works with all class method calls...

      use Math::BigInt; my $class = "Math::BigInt"; my $six = $class->new(6); my $seven = "Math::BigInt"->new(7); my $eight = join("::", "Math", "BigInt")->new(8);

      In fact, string quoting class names is arguably a much better idea than the more conventional Math::BigInt->new(9), because the latter will start behaving surprisingly if there's ever a BigInt sub defined in the Math package.

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
        string quoting class names is arguably a much better idea
        Or, you can use Math::BigInt::->new(8).
        لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (17)
As of 2015-07-07 13:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls