Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^3: require mystery

by Corion (Pope)
on Sep 06, 2007 at 07:38 UTC ( #637340=note: print w/replies, xml ) Need Help??


in reply to Re^2: require mystery
in thread require mystery

No:

require $pathtool;

is exactly the same as

require "File::Path";

which fails. Your other attempt,

eval "require $pathtool";

evaluates the string, which then looks like

require File::Path;

which succeeds. Consider using the following code if you want a dynamic module loader:

sub require_package { for (@_) { (my $file = $_) =~ s-::|'-/-g; require "$file.pm"; }; };

Other alternatives which I recommend against are UNIVERSAL::require and Module::Load because they both hide fatal errors from you, for example compilation errors in the required modules.

Maybe you might want Module::Pluggable for a plugin system.

Replies are listed 'Best First'.
Re^4: require mystery
by Pstack (Scribe) on Sep 06, 2007 at 22:27 UTC

    Yes, I see, and like your custom function. The code had been working previously with an expression eval before I altered it to the FIRST block eval.

    Did you notice how I was thrown off by the success nearby of the SECOND block eval which survived all versions:

    eval {$pathtool->import("mkpath")}; #OK

    which would not then seem right either if similarly translated as ..(though it may be right?)..:

    "File::Path"->import("mkpath");#??

    Mmm!

    cheers

    Pstack

      Perl allows barewords or strings (which are basically the same, except that a bareword comes without quotes, hence, "bare") as invocants:

      File::Path->import(...)

      is the same as:

      "File::Path"->import(...)

      and

      my $pathtool = "File::Path"; $pathtool->import(...)

      and all three translate to:

      File::Path::import("File::Path",...);

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2020-06-04 05:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you really want to know if there is extraterrestrial life?



    Results (30 votes). Check out past polls.

    Notices?