SYNOPSIS

     use XPAN::Query qw(
         list_xpan_packages
         list_xpan_modules
         list_xpan_dists
         list_xpan_authors
     );
    
     # the first query will download 02packages.details.txt.gz from a CPAN mirror
     # (the default is "/cpan" or "http://www.cpan.org/") and convert it to a SQLite
     # database, so it will take some time, e.g. several seconds for download (1.5MB
     # at the time of this writing, so a few seconds depending on your connection
     # speed) plus around 10-15s for conversion.
    
     my $res = list_xpan_authors("MICHAEL%"); # => ["MICHAEL", "MICHAELW"]
    
     # the subsequent queries will be instantaneous, unless you change mirror site
     # or 24 hours has passed, which is the default cache period.
    
     my list_xpan_modules(author=>"NEILB", detail=>1);

DESCRIPTION

    XPAN is a term I coined for any repository (directory tree, be it on a
    local filesystem or a remote network) that has structure like a CPAN
    mirror, specifically having a modules/02packages.details.txt.gz file.
    This includes a normal CPAN mirror, a MiniCPAN, or a DarkPAN. Currently
    it excludes BackPAN, because it does not have
    02packages.details.txt.gz, only authors/id/C/CP/CPANID directories.

    With this module, you can query various things about the repository.
    This module fetches 02packages.details.txt.gz and parses it (caching it
    locally for a period of time).

VARIABLES

 $XPAN::Query::CACHE_PERIOD => int (default: 86400)

    Set default cache period, in seconds.

 $XPAN::Query::URL => str (default: "/cpan")

    Set default XPAN URL.

ENVIRONMENT

 XPAN_CACHE_PERIOD => int

    Can be used to preset $XPAN::Query::CACHE_PERIOD.

 XPAN_URL => str

    Can be used to preset $XPAN::Query::URL.

SEE ALSO

    Parse::CPAN::Packages is a more full-featured and full-fledged module
    to parse 02packages.details.txt.gz. The downside is, startup and
    performance is slower.

    Parse::CPAN::Packages::Fast is created as a more lightweight
    alternative to Parse::CPAN::Packages.

    PAUSE::Packages also parses 02packages.details.txt.gz, it's just that
    the interface is different.

    PAUSE::Users parses authors/00whois.xml. XPAN::Query does not parse
    this file, it is currently not generated/downloaded by CPAN::Mini, for
    example.

    CPANDB::Generator. This will generate a local CPANDB SQLite database
    like XPAN::Query. However, it generates a more complete index (e.g.
    dependency graph) but require a (local) CPAN mirror instead of just
    02packages.details.txt.gz file.

    Tangentially related: BackPAN::Index

