in reply to Re: Use with variable
in thread Use with variable

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

Replies are listed 'Best First'.
Re^3: Use with variable
by Aristotle (Chancellor) on Sep 08, 2004 at 22:11 UTC

    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.