http://qs321.pair.com?node_id=227585


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

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.