Yes, parsing perl is uncool but that's exactly how the PAUSE indexer works. In cpandiff - diff local source against CPAN I include a parse_packages function which is stripped right from the 457 release of CPAN.
Comment on Re^8: submit-cpan-ratings - upload ratings to CPAN for stuff you've used