NAME
CPAN::Source - CPAN source list data aggregator.
DESCRIPTION
CPAN::Source fetch, parse, aggregate all CPAN source list for you.
Currently CPAN::Source supports 4 files from CPAN mirror. (00whois.xml, contains cpan author information, 01mailrc.txt contains author emails, 02packages.details.txt contains package information, 03modlist contains distribution status)
CPAN::Source aggregate those data, and information can be easily retrieved.
The distribution info is from CPAN::DistnameInfo.
SYNOPSIS
my $source = CPAN::Source->new(
cache_path => '.cache',
cache_expiry => '7 days',
mirror => 'http://cpan.nctu.edu.tw',
source_mirror => 'http://cpansearch.perl.org'
);
$source->prepare; # use LWP::UserAgent to fetch all source list files ...
# 00whois.xml
# 01mailrc
# 02packages.details.txt
# 03modlist
$source->dists; # all dist information
$source->authors; # all author information
$source->package_data; # parsed package data from 02packages.details.txt.gz
$source->modlist; # parsed package data from 03modlist.data.gz
$source->mailrc; # parsed mailrc data from 01mailrc.txt.gz
my $dist = $source->dists('Moose');
my $distname = $dist->name;
my $distvname = $dist->version_name;
my $version = $dist->version; # attributes from CPAN::DistnameInfo
my $meta_data = $dist->fetch_meta();
$meta_data->{abstract};
$meta_data->{version};
$meta_data->{resources}->{bugtracker};
$meta_data->{resources}->{repository};
my $readme = $dist->fetch_readme;
my $changes = $dist->fetch_changes;
METHODS
new( OPTIONS )
prepare_authors
prepare_mailrc
prepare_modlist
Download 03modlist.data.gz and parse it.
prepare_package_data
Download 02packages.details.gz and parse it.
module_source_path
Return full-qualified source path. built from source mirror, the default source mirror is http://cpansearch.perl.org.
http_get
Use LWP::UserAgent to fetch content.
new_dist
Convert CPAN::DistnameInfo into CPAN::Source::Dist.
ACCESSORS
- package_data
-
which is a hashref, contains:
{ meta => { File => ... URL => ... Description => ... Line-Count => ... Last-Updated => ... }, packages => { 'Foo::Bar' => { class => 'Foo::Bar', version => 0.01 , path => tar path, dist => dist name } .... } }
AUTHOR
Yo-An Lin <cornelius.howl {at} gmail.com>
SEE ALSO
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 404:
'=item' outside of any '=over'