Frew Schmidt Frew Schmidt - 9 months ago 52
Perl Question

How do I use a Perl module from a relative location?

So lets say I have a dir called foo, and in that I have lib and bin. The scripts in bin need stuff in lib. So naturally I do something like this:

use strict;
use warnings;
use lib '../lib';
use Foo; # <-- comes from lib

But that means I have to be in the bin dir to run the script. Surely there is a better way. What's the Right Way to do this?

Edit: lot's of great answers below! But basically it seems like I am Doing It Wrong. The stuff in lib should go to some kind of system library (~/perl/site maybe?) and similarly the stuff in bin should do the same thing. Thanks guys!

Answer Source

The standard FindBin module does what you want.

use FindBin;
use lib "$FindBin::Bin/../lib";

perldoc FindBin for more.