Frew Schmidt Frew Schmidt - 17 days ago 7
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:

#!perl
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

The standard FindBin module does what you want.

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

perldoc FindBin for more.

Comments