Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Re^2: modify @INC

by Anonymous Monk
on Jan 16, 2003 at 23:46 UTC ( #227561=note: print w/replies, xml ) Need Help??

in reply to Re^2: modify @INC
in thread modify @INC

Would it be an option to do something like:

$a="/my/module/path"; eval "use lib '$a'"; eval { use MyModule; }
I recall once using eval & use together to dynamically load specific modules when needed... This was before I knew about AUTOLOAD and SelfLoader and all...

Replies are listed 'Best First'.
Re^4: modify @INC
by Aristotle (Chancellor) on Jan 17, 2003 at 01:42 UTC
    No, that won't work. The use inside the eval BLOCK is compiled at compile time, but the string in eval EXPR is not. eval "use Foo"; is nothing but an obfuscated way to say require Foo; Foo->import;

    Neither case is a job for eval here. If you want variable paths at compile time, you do the following:

    my $libpath; BEGIN { $libpath = "/foo/bar"; } use lib $libpath;
    If you want to load modules with dynamic @INC at runtime, you make use of the aforemention construct:
    { local @INC = ("/foo/bar", @INC); require Foo; Foo->import; }
    eval will not help. And $a is a really awful name for a variable (plus $a and $b are reserved for sort). :)

    Makeshifts last the longest.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2023-09-24 18:11 GMT
Find Nodes?
    Voting Booth?

    No recent polls found