Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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

by jds17 (Pilgrim)
on Oct 02, 2012 at 22:20 UTC ( [id://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 (Canon) 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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://996926]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2024-04-19 22:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found