Perl"s @INC - am I missing the point?

Perl"s @INC - am I missing the point?

am 17.04.2008 06:02:53 von andrew.fabbro

When building (compiling) perl, I wanted to include a directory where
we install our local modules. So I built perl with -Dotherlibdirs=/app/
common/oracle/perl/local.

Later, I installed various modules with PREFIX=/app/common/oracle/perl/
local

However, perl can't find them (and yes, I checked and /app/common/
oracle/perl/local is in @INC). However, if I put this in @INC:

/app/common/oracle/perl/local/lib/site_perl/5.8.8/PA-RISC2.0 -LP64

Then it finds things and works just fine.

But what the...heck is the point of -Dotherlibdirs if what you point
it at doesn't work!? So should I rebuild perl with -Dotherlibdirs set
to "/app/common/oracle/perl/local/lib/site_perl/5.8.8/PA-RISC2. 0-
LP64"? The whole point of this exercise was to avoid having to
manually "use lib"...

Or perhaps I'm just confused...

Re: Perl"s @INC - am I missing the point?

am 17.04.2008 06:55:56 von xhoster

Andrew Fabbro wrote:
> When building (compiling) perl, I wanted to include a directory where
> we install our local modules. So I built perl with -Dotherlibdirs=/app/
> common/oracle/perl/local.
>
> Later, I installed various modules with
> PREFIX=/app/common/oracle/perl/local


For some reason, PREFIX automatically gets /lib added to the end before it
gets used for the location of installing the modules. I'm sure this makes
complete sense to those people who understand this stuff, but I am not one
of them.


>
> However, perl can't find them (and yes, I checked and /app/common/
> oracle/perl/local is in @INC). However, if I put this in @INC:
>
> /app/common/oracle/perl/local/lib/site_perl/5.8.8/PA-RISC2.0 -LP64
>
> Then it finds things and works just fine.

It would probably work fine if you just put in
/app/common/oracle/perl/local/lib


>
> But what the...heck is the point of -Dotherlibdirs if what you point
> it at doesn't work!? So should I rebuild perl with -Dotherlibdirs set
> to "/app/common/oracle/perl/local/lib/site_perl/5.8.8/PA-RISC2. 0-
> LP64"? The whole point of this exercise was to avoid having to
> manually "use lib"...

I think you should rebuild with -Dotherlibdirs set to
/app/common/oracle/perl/local/lib

>
> Or perhaps I'm just confused...

You and I both.

Xho

--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.

Re: Perl"s @INC - am I missing the point?

am 17.04.2008 10:03:25 von andrew.fabbro

On Apr 16, 9:55 pm, xhos...@gmail.com wrote:
> It would probably work fine if you just put in
> /app/common/oracle/perl/local/lib

Alas...nope.

Re: Perl"s @INC - am I missing the point?

am 17.04.2008 14:14:03 von Ben Morrow

Quoth Andrew Fabbro :
> When building (compiling) perl, I wanted to include a directory where
> we install our local modules. So I built perl with -Dotherlibdirs=/app/
> common/oracle/perl/local.
>
> Later, I installed various modules with PREFIX=/app/common/oracle/perl/
> local
>
> However, perl can't find them (and yes, I checked and /app/common/
> oracle/perl/local is in @INC). However, if I put this in @INC:
>
> /app/common/oracle/perl/local/lib/site_perl/5.8.8/PA-RISC2.0 -LP64
>
> Then it finds things and works just fine.

You need to use LIB= for MakeMaker rather than PREFIX=. PREFIX is a
little weird (for historical reasons); it means 'this is where my whole
perl tree is installed', so it will attempt to create a whole lib/ man/
bin/ tree matching the one your perl is installed into, including
site_perl and so on.

Ben

Re: Perl"s @INC - am I missing the point?

am 17.04.2008 14:47:04 von Ben Morrow

Quoth Ben Morrow :
>
> Quoth Andrew Fabbro :
> > When building (compiling) perl, I wanted to include a directory where
> > we install our local modules. So I built perl with -Dotherlibdirs=/app/
> > common/oracle/perl/local.
> >
> > Later, I installed various modules with PREFIX=/app/common/oracle/perl/
> > local
> >
> > However, perl can't find them (and yes, I checked and /app/common/
> > oracle/perl/local is in @INC). However, if I put this in @INC:
> >
> > /app/common/oracle/perl/local/lib/site_perl/5.8.8/PA-RISC2.0 -LP64
> >
> > Then it finds things and works just fine.
>
> You need to use LIB= for MakeMaker rather than PREFIX=. PREFIX is a
> little weird (for historical reasons); it means 'this is where my whole
> perl tree is installed', so it will attempt to create a whole lib/ man/
> bin/ tree matching the one your perl is installed into, including
> site_perl and so on.

Also, note that perl will only search arch-specific subdirs of
otherlibdirs if they existed when Configure was run. So you need to make
sure /app/common/oracle/perl/local/PA-RISC2.0-LP64 exists before you run
Configure.

Ben