|Think about Loose Coupling|
I've just read through that ML discussion you pointed to, and I have to admit I'm still in the dark about why PREFIX is bad. Bear with me a minute. I see there two problems mentioned:
I generally get the feeling that people are too hung up on the "special cases" of PREFIX, and won't seem to admit that, usually, anyone using PREFIX just wants to say "stick everything under this directory", and has PREFIX as their only extra argument. All this doc discussing reflects this problem. Were I to have a say, I'd make PREFIX just do that, and warn whenever it is used together with other potenially conflicting variables.
One other thing I noticed in that discussion. It seems to imply, that when using PREFIX with Makefile.PL, your PERL5LIB automagically gets set to whatever you used in PREFIX. That's never been the case for me, when I've wanted to install a bunch of modules that depend upon each other, in a particular directory, I've had to set PERL5LIB manually after the first one, so the others can find it. Have I missed some innovation there, or am I misunderstanding the discussion?
Last thing: Software doesnt have to be perfect, even in this case. It just needs to document what it can do, and not do, and warn suffciently if the user does something that won't produce useful results. Add the functionality, document it, and let the user worry about how they are going to use it, because I'm still convinced, that in 99% of the cases, the person installing the module will not stumble across the edge cases.
Oh, and Module::Build should definitely complain if it gets arguments it doesn't know, silently ignoring is a recipe for disaster IMO. (Images of people screaming "why didnt XYZ work?" - sorta like strict, y'know, a typo checker..