Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^2: How to import names from a dynamically required module

by jds17 (Pilgrim)
on Oct 02, 2012 at 22:20 UTC ( #996926=note: print w/ replies, xml ) Need Help??


in reply to Re: How to import names from a dynamically required module
in thread How to import names from a dynamically required module

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.


Comment on Re^2: How to import names from a dynamically required module
Re^3: How to import names from a dynamically required module
by tobyink (Abbot) on Oct 03, 2012 at 06:35 UTC

    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).
      لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        Or you can use Math::BigInt->new, because the odds of there being a BigInt sub in the Math package are astronomical :)

        Indeed. This has the (often welcome) side-effect that the existence of the package is checked at compile-time, and a warning is issued (if warnings are enabled) if the package does not exist.

        With stringy class names (and indeed with the traditional Foo::Bar->new) there is no such check, and Perl just blows up when it can't resolve the method call.

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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2014-12-25 15:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (160 votes), past polls