I don't understand what use local::lib does that regular use lib doesn't. Could someone explain it?
How is use local::lib different from use lib?
3.9k Views Asked by xenoterracide AtThere are 3 best solutions below
On
Regular use lib foo is almost as simple as:
BEGIN { unshift(@INC, foo) }
Whereas use local::lib sets many other Perl environment variables to make sure you can install modules locally, see the source.
On
use lib adds a directory to your module search path (@INC). It has no effect on anything outside of the program or module which contains the use lib directive.
local::lib is intended to be used to enable a private module installation directory and, if you configure your shell environment in the way that it recommends, this private directory will be used for all Perl module installations (whether via CPAN or manual make install) and modules installed there will be made available to all Perl programs/modules run from within your local::lib-aware shell environment.
local::libDefaults to
~/perl5if you don't specify a directory (whileuse lib;is a no-op).Resolves relative paths to absolute paths before adding them to
@INC. (libjust adds the relative path as-is.)Expands
~and~userin the directory name.Appends
/lib/perl5to the directory you specify. (Souse local::lib '/foo';is somewhat equivalent touse lib '/foo/lib/perl5';.)Prepends
DIR/binto your PATH, so you can use scripts installed by local modules.