in reply to Makefile.PL and Build.PL

I noticed that Module::CoreList does this ... do any other distros do this?

Yes. In the early days of Module::Build, I provided a parallel but unconnected Build.PL, just to get a feel for Ken's shiny new module and how it worked. I kept them separate because I wanted people to be able to install my module even if Module::Build was broken (and it was often broken in those very early days).

Naturally, I was appalled by the horrific camel-like code duplication in two places, Makefile.PL and Build.PL, but was willing to endure this as a convenience to my users. :-)

Much to my surprise, the simple act of adding a new (and unrelated) Build.PL caused my module to fail ActiveState's automated build process because, at that time, if a distribution contained both a Makefile.PL and a Build.PL, the ActiveState auto-builder chose the Build.PL (and the current Module::Build at that time failed its Windows tests). That has since been changed, ActiveState's auto-builder now chooses Makefile.PL if both exist.

Oh, and after adding the new and unrelated Build.PL, I had to change:

WriteMakefile( NAME => 'Acme::EyeDrops', VERSION => '1.45', );
to:
WriteMakefile( NAME => 'Acme::EyeDrops', VERSION => '1.45', PL_FILES => {} );
in Makefile.PL to stop it trying to invoke Build.PL.