http://www.perlmonks.org?node_id=564726


in reply to Re: What are the "prefix" and "lib" arguments to makefile.pl used for?
in thread What are the "prefix" and "lib" arguments to makefile.pl used for?

actually, this documentation has never helped me. i just didn't get the difference of the two parameters.

a couple of years ago, when I had the problem to install an application onto the customers machine and the dependant modules (packaged with the application) into a certain directory nobody in c.l.p.m could really help me, and the MakeMaker docs didn't either. I only used the PREFIX parameter and was wondering how to predict in which directories the modules would end up (as this changed also between perl versions).

I happened to stumble over a website where Makefile.PL was called additionally with the LIB parameter (I don't remember where I found this). I tried it, and it just worked. Foo::Bar ended up reliably in prefix/Foo/Bar.pm, so that I knew that I could just say use lib qw(prefix);

But why?

So I think the docs are not really easy to understand. It says for PREFIX=~:
This will install all files in the module under your home directory, with man pages and libraries going into an appropriate place (usually ~/man and ~/lib).

and for LIB=~/lib:
This will install the module's architecture-independent files into ~/lib, the architecture-dependent files into ~/lib/$archname.

What exactly is the difference between "all files in the module" and "the module's architecture-independent files"? (Note that also using PREFIX will use a different directory for architecture dependant files.) If you read the documentation for LIB, you don't know why you still have to use PREFIX.

I think a part of the confusion is caused by the fact that both parameters can contradict each other (saying PREFIX=/foo/bar LIB=/foo/baz)