[sf-perl] use lib: order doesn't seem to matter

Garth Webb garth.webb at gmail.com
Tue Aug 24 11:19:06 PDT 2010


Why not just set the standard PERL5LIB env which get placed at the beginning
of @INC?

On Tue, Aug 24, 2010 at 11:08 AM, Michael Friedman <
friedman at highwire.stanford.edu> wrote:

> David,
>
> I managed a work around for this behavior at my office a while ago. We have
> each developer set an environment variable containing their personal module
> path and use that in preference to the default. It requires this at the top
> of each script, though:
>
> BEGIN {
>    if ( $ENV{PERL_LIB} =~ /\:/ ) {
>        unshift( @INC, split( /\:/, $ENV{PERL_LIB} ) );
>    }
>    elsif ( $ENV{PERL_LIB} ) {
>        unshift( @INC, $ENV{PERL_LIB} );
>    }
>    else {
>        unshift( @INC, '/path/to/production/lib/perl5' );
>    }
> }
>
>
> The colon splitting was added when we realized we wanted to split our perl
> modules into multiple CVS projects. They're all in one production directory,
> but in individual project directories for each developer.
>
> -- Mike
>
> ______________________________________________________________________________
> Mike Friedman | HighWire Press, Stanford Univ |
> friedman at highwire.stanford.edu
>
> On Aug 24, 2010, at 10:53 AM, David Alban wrote:
>
> > greetings,
> >
> > one of our customary 'use lib' statements for a local program is:
> >
> >  use lib '/nas/reg/lib/perl';
> >
> > i'm modifying the program and in my development area, i want to use a
> > locally modified version of one of the modules it uses.
> >
> > but it's picking up the installed module rather than my local module.
> >
> > here's what i'm seeing:
> >
> >  DB<1> l 1+10
> > 1       #!/usr/bin/perl
> > 2
> > 3:      use strict;
> > 4:      use warnings;
> > 5
> > 6:      use lib '/nas/reg/lib/perl';
> > 7
> > 8            ##### => dbg
> > 9:      use lib
> >
> '/nas/home/dalban/perforce/srwd00reg001/default/internal/reg/pb_reg_nasify_properties/lib/perl';
> > 10           ##### <= dbg
> > 11
> >  DB<2> x @INC
> > 0  '/nas/reg/lib/perl/x86_64-linux-thread-multi'
> > 1  '/nas/reg/lib/perl/5.8.5'
> > 2  '/nas/reg/lib/perl'
> > 3
>  '/nas/home/dalban/perforce/srwd00reg001/default/internal/reg/pb_reg_nasify_properties/lib/perl'
> >
> > and if i reverse the order in which i "use" them, i get:
> >
> >  DB<1> l 1+10
> > 1       #!/usr/bin/perl
> > 2
> > 3:      use strict;
> > 4:      use warnings;
> > 5
> > 6            ##### => dbg
> > 7:      use lib
> >
> '/nas/home/dalban/perforce/srwd00reg001/default/internal/reg/pb_reg_nasify_properties/lib/perl';
> > 8            ##### <= dbg
> > 9
> > 10:     use lib '/nas/reg/lib/perl';
> > 11
> >  DB<2> x @INC
> > 0  '/nas/reg/lib/perl/x86_64-linux-thread-multi'
> > 1  '/nas/reg/lib/perl/5.8.5'
> > 2  '/nas/reg/lib/perl'
> > 3
>  '/nas/home/dalban/perforce/srwd00reg001/default/internal/reg/pb_reg_nasify_properties/lib/perl'
> >
> > i thought 'use lib' had the effect of unshifting its arg onto @INC,
> > but /nas/reg/lib/perl seems to "win" no matter in what order i specify
> > the libs.
> >
> > i've done this before with no problem.  i'm sure i'm missing
> > something.  or perhaps it only seemed to work before...
> >
> > what am i missing?
> >
> > thanks,
> > david
> > --
> > Live in a world of your own, but always welcome visitors.
> > _______________________________________________
> > SanFrancisco-pm mailing list
> > SanFrancisco-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/sanfrancisco-pm
>
> _______________________________________________
> SanFrancisco-pm mailing list
> SanFrancisco-pm at pm.org
> http://mail.pm.org/mailman/listinfo/sanfrancisco-pm
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/sanfrancisco-pm/attachments/20100824/5a083e06/attachment.html>


More information about the SanFrancisco-pm mailing list