Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
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
Replies are listed 'Best First'.
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).
      لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        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'

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

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 making s'mores by the fire in the courtyard of the Monastery: (18)
As of 2015-07-29 15:20 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 (263 votes), past polls