-
-
06 Oct 2015 19:39:52 UTC
- Distribution: Parse-CPAN-Packages-Fast
- Module version: 0.09
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Repository
- Issues (0)
- Testers (5648 / 4 / 0)
- Kwalitee
Bus factor: 1- 77.17% Coverage
- License: unknown
- Activity
24 month- Tools
- Download (7.19KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- CPAN::DistnameInfo
- CPAN::Version
- IO::Uncompress::Gunzip
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Parse::CPAN::Packages::Fast - parse CPAN's package index
SYNOPSIS
use Parse::CPAN::Packages::Fast; my $p = Parse::CPAN::Packages::Fast->new("/path/to/02packages.details.txt.gz"); ## Or alternatively, if CPAN.pm is configured #my $p = Parse::CPAN::Packages::Fast->new; my $m = $p->package("Kwalify"); # $m is a Parse::CPAN::Packages::Fast::Package object print $m->package, "\n"; # Kwalify print $m->version, "\n"; # 1.21 my $d = $m->distribution; # $d is a Parse::CPAN::Packages::Fast::Distribution object print $d->dist, "\n"; # Kwalify print $d->version, "\n"; # 1.21
DESCRIPTION
This is a largely API compatible rewrite of Parse::CPAN::Packages.
Notable differences are
The method add_package of Parse::CPAN::Packages::Fast::Distribution is not implemented
Parse::CPAN::Packages::Fast::Distribution is really a CPAN::DistnameInfo (but this one is compatible with Parse::CPAN::Packages::Distribution>
A Parse::CPAN::Packages::Fast::Distribution object does not have its packages included in the data structure, but it's necessary to use the
contains
method. Likewise, a Parse::CPAN::Packages::Fast::Package object does not include the containing distribution in the data structure, but it's necessary to use thedistribution
method.The
new
constructor may be called without the path to the02packages.details.txt
file. In this case CPAN.pm's logic is used to find an existing packages file. Note that this might be interactive (i.e. if CPAN.pm was never configured, or needs reconfiguration), so don't do this in batch systems.
WHY?
Calling
Parse::CPAN::Packages
' constructor is quite slow and takes about 10 seconds on my machine. In contrast, the reimplementation just takes a second.I did some benchmarking of the original module and found no obvious weak point to speed it up. Moose is used here, but does not seem to cause the problem. I suspect that the real problem is just heavy use of method calls.
Also, this module does not have problems with circular references like the original. See "BUGS" in Parse::CPAN::Packages.
SEE ALSO
Module Install Instructions
To install Parse::CPAN::Packages::Fast, copy and paste the appropriate command in to your terminal.
cpanm Parse::CPAN::Packages::Fast
perl -MCPAN -e shell install Parse::CPAN::Packages::Fast
For more information on module installation, please visit the detailed CPAN module installation guide.