jayto has asked for the wisdom of the Perl Monks concerning the following question:

So I have a folder called patchManagement. In that folder I have a lib folder. I want to run a perl file from the patchManagement folder that uses the modules in the lib folder, I tried using use lib '/lib' and use lib '$FindBin::Bin/lib' I am obviously doing this wrong, how should I be doing it?


Here are my errors incase they help.

Can't locate ID/PatchAssembly/ICSCERT.pm in @INC (@INC contains: /usr/ +local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /us +r/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at test. +pl line 4. BEGIN failed--compilation aborted at test.pl line 4.

the ID folder is inside the lib folder

Replies are listed 'Best First'.
Re: Set include path
by moritz (Cardinal) on Aug 06, 2012 at 13:42 UTC
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Set include path
by MidLifeXis (Monsignor) on Aug 06, 2012 at 13:35 UTC
      Those docs are what I followed to get my above attempts.

        The first: use lib '/lib' will attempt to find your library file in the root of the current drive. If you mean that it should look in the lib directory under the current directory, then use lib 'lib' would be appropriate, although potentially risky 1.

        moritz has addressed the usage issue with your other attempt.

        1 - Given that any attacker could probably copy your script anyway, I am having a hard time adding any additional risk by a user being able to replace your library with one that they 'own', therefore the use of 'potentially'.

        --MidLifeXis

            Those docs are what I followed to get my above attempts.

        OK: show us your code then. In the last 24 years I've used various flavors of use lib .. and push @INC,"..." with success. The only time either hasn't worked for me is when I fat fingered something (like a path).


        Peter L. Berghold -- Unix Professional
        Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg
Re: Set include path
by Anonymous Monk on Aug 06, 2012 at 20:08 UTC
    The use lib statement is effectively executable, not a declaration, therefore it should be put first.