CPAN::ParseDistribution - index a file from the BackPAN


CPAN-ParseDistribution documentation  | view source Contained in the CPAN-ParseDistribution distribution.

Index


NAME

Top

CPAN::ParseDistribution - index a file from the BackPAN

DESCRIPTION

Top

Given a file from the BackPAN, this will let you find out what versions of what modules it contains, the distribution name and version

SYNOPSIS

Top

    my $dist = CPAN::ParseDistribution->new(
        'A/AU/AUTHORID/subdirectory/Some-Distribution-1.23.tar.gz',
        use_tar => '/bin/tar',
        ...
    );
    my $modules     = $dist->modules(); # hashref of modname => version
    my $distname    = $dist->dist();
    my $distversion = $dist->distversion();

METHODS

Top

new

Constructor, takes a single mandatory argument, which should be a tarball or zip file from the CPAN or BackPAN, and some optional named arguments:

use_tar

The full path to 'tar'. This is assumed to be GNU tar, and to be sufficiently well-endowed as to be able to support bzip2 files. Maybe I'll fix that at some point. If this isn't specified, then Archive::Tar is used instead.

You might want to use this if dealing with very large files, as Archive::Tar is rather profligate with memory.

isdevversion

Returns true or false depending on whether this is a developer-only or trial release of a distribution. This is determined by looking for an underscore in the distribution version or the string '-TRIAL' at the end of the distribution version.

modules

Returns a hashref whose keys are module names, and their values are the versions of the modules. The version number is retrieved by eval()ing what looks like a $VERSION line in the code. This is done in a Safe compartment, but may be a security risk if you do this with untrusted code. Caveat user!

dist

Return the name of the distribution. eg, in the synopsis above, it would return 'Some-Distribution'.

distversion

Return the version of the distribution. eg, in the synopsis above, it would return 1.23.

Strictly speaking, the CPAN doesn't have distribution versions - Foo-Bar-1.23.tar.gz is not considered to have any relationship to Foo-Bar-1.24.tar.gz, they just happen to coincidentally have rather similar contents. But other tools, such as those used by the CPAN testers, do treat distributions as being versioned.

SECURITY

Top

This module executes a very small amount of code from each module that it finds in a distribution. While every effort has been made to do this safely, there are no guarantees that it won't let the distributions you're examining do horrible things to your machine, such as email your password file to strangers. You are strongly advised to read the source code and to run it in a very heavily restricted user account.

LIMITATIONS, BUGS and FEEDBACK

Top

I welcome feedback about my code, including constructive criticism. Bug reports should be made using http://rt.cpan.org/ or by email, and should include the smallest possible chunk of code, along with any necessary data, which demonstrates the bug. Ideally, this will be in the form of files which I can drop in to the module's test suite.

SEE ALSO

Top

http://pause.perl.org/

dumpcpandist

AUTHOR, COPYRIGHT and LICENCE

Top

CONSPIRACY

Top

This module is also free-as-in-mason software.


CPAN-ParseDistribution documentation  | view source Contained in the CPAN-ParseDistribution distribution.