newbie01.perl has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

At the moment, I got Perl modules that are scattered all over the place due to several teams preferring to maintain their own set of Perl. To get access to my modules, I include the use lib <path-to-my-modules>. If I want to access modules from another directory, do I need to have two (2) use lib lines or just one use lib with each path separated by a space?

Also, is there another way of setting the order in which Perl search for the modules to use, in which case I do not need to specify the use lib. I found one where you can set the PERL5LIB into your .profile, is this answer? How about for MSDOS, I have to set the PERL5LIB environment variable before running my Perl script? I've already requested permission from Windows SA regarding setting the PERL5LIB variable but was turned down. So am thinking if I can create a .bat file that sets this and run my Perl script from the same batch file, will this work?

Replies are listed 'Best First'.
Re: Using @INC
by codeacrobat (Chaplain) on Nov 28, 2009 at 09:45 UTC
    Two use lib's works. The directories are unshifted to @INC, when you call use lib.
    perl -Mlib=/foo -Mlib=/bar -le 'print for @INC' /bar /foo /etc/perl ...
    You can also use lib qw(/bar /foo) for the same effect.
    perl -Mlib=/bar,/foo -le 'print for @INC' /bar /foo /etc/perl ...

    print+qq(\L@{[ref\&@]}@{['@'x7^'!#2/"!4']});
Re: Using @INC
by ikegami (Patriarch) on Nov 28, 2009 at 17:44 UTC

    It doesn't have to be in your profile. It's just very convenient for it to be there.

    >set PERL5LIB=c:\bar;c:\foo >perl -le"print for @INC" c:\bar c:\foo ...

    Mind you, the var will be visible to that shell and its children if you do it this way. Yes, you could but this in a batch file.