The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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'