I just had this same problem, here is a solution with description:
I was doing a "cpan Bundle::CPAN" which failed. When I re-ran I found that cpan was now broken and I couldn't install any modules. Worst still, "perl Makefile.PL" was also dying with the same error:
Can't locate object method "new" via package "CPAN::Meta" at /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm line XXXX
When testing the CPAN::Meta module directly, I found the Parse::CPAN::Meta version was too old:
perl -MCPAN::Meta
Parse::CPAN::Meta version 1.44 required--this is only version 1.40 at /usr/lib/perl5/5.8.8/CPAN/Meta/Converter.pm line 13.
To be able to update Parse::CPAN::Meta, I had to first disable the use of CPAN::Meta in MakeMaker. I edited the file:
/usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm
And added "return 0;" after "sub _has_cpan_meta {" to make:
sub _has_cpan_meta {
return 0;
Then I was able to install Parse::CPAN::Meta as normal with "cpan Parse::CPAN::Meta". After which I confirmed CPAN::Meta was working "perl -MCPAN::Meta" and removed the "return 0" I'd added to /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm.
Hey presto, all working again :)
Hope that helps anyone else who finds this thread.