One of the drawbacks, and IMO, a very, very big drawback is that for any module included in the Perl core distribution, the burden of maintainance ultimately falls on p5p. It's not so much a problem if the maintainer is active, but it is when the maintainer has fallen from the planet. Or just doesn't fix it. A lot of effort of p5p goes into trying to archieve backwards compatability - and one obvious consequence is that it's very, very hard for a module to disappear from the core. Just witness
chat2.pl - the module that didn't want to die.
I think it would have been better if Perl always had a small module set. IMO, only modules that fall into one of the following classes ought to be in the Perl core:
- Modules that make it easy to install other modules, or that are needed in the make/install process (CPAN/CPANPLUS, MakeMaker, Test::*, etc).
- Modules that are deeply connected to the core. (B::*, IO::*, etc)
- Some pragmas. (strict, warnings).
- Defacto standards (Exporter).
But no CGI, no Benchmark, no Memoize, no Switch, no Text::*, etc.
(Note, I'm not saying they should be removed. They just shouldn't have been there, IMO).