Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
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 pondering the Monastery: (4)
As of 2014-07-28 04:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (185 votes), past polls