Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Use with variable

by borisz (Canon)
on Sep 08, 2004 at 13:11 UTC ( [id://389338]=note: print w/replies, xml ) Need Help??


in reply to Use with variable

Yes, maybe you need to call import yourself.
$mod = "Digest::MD5"; eval "require $mod";
Boris

Replies are listed 'Best First'.
Re^2: Use with variable
by edan (Curate) on Sep 08, 2004 at 13:31 UTC

    If you're already going to eval, might as well just do:

    my $mod = "Digest::MD5"; eval "use $mod";

    and avoid calling import yourself...

    And don't forget to check $@...

    --
    edan

      Actually, you don't need to interpolate the variable, and it's much safer not to:

      my $module = "Digest::MD5"; eval 'use $module'; # note single quotes

      That's because use $var actually works. You just have to somehow populate $var before the compile-time effect of use takes place. A BEGIN block lets you do that. Silly example:

      my $module; BEGIN { $module = "Digest::MD5"; } use $module;

      Note that the snippets of course aren't equivalent — the first loads the module at runtime, the second loads it at compile time.

      Makeshifts last the longest.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2024-03-28 16:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found