On Aug 2, awarsd said:
>use lib "/path/to/Module";
>it works just fine
>with $dir = '/path/to';
>use lib "$dir/Module";
>it give me an error I also tried use lib qw() but same problem is there a
>way to fix the problem??
The problem is that 'use' is a compile-time directive, whereas assigning a
value to $dir happens at run-time.
When Perl runs your program, it does a preliminary sweep over it, and does
things like include modules when 'use'd, and execute BEGIN blocks.
A statement like 'use lib "..."' is really just
BEGIN {
require lib;
lib->import("...");
}
so it happens at compile-time. This means that your variable $dir, which
gets assigned at run-time, won't have a value when you need it to. Here's
a simple demonstration:
$x = 2;
BEGIN {
print "x is '$x'\n";
}
That prints "x is ''", because the BEGIN block happens before we set $x to
2. You probably want to require() your config file in a BEGIN block
before you do 'use lib'.
BEGIN { require "my_vars.pl" }
use lib "$dir/...";
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
<stu> what does y/// stand for? <tenderpuss> why, yansliterate of course.
[ I'm looking for programming work. If you like my work, let me know. ]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]