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]

Reply via email to