.\" -*- mode: troff; coding: utf-8 -*-
.\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.48)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Required to disable full justification in groff 1.23.0.
.if n .ds AD l
.\" ========================================================================
.\"
.IX Title "CPAN::DistnameInfo 3"
.TH CPAN::DistnameInfo 3 2026-10-26 "perl v5.44.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH NAME
CPAN::DistnameInfo \- Extract distribution name and version from a distribution filename
.SH SYNOPSIS
.IX Header "SYNOPSIS"
.Vb 1
\& my $pathname = "authors/id/G/GB/GBARR/CPAN\-DistnameInfo\-0.02.tar.gz";
\&
\& my $d = CPAN::DistnameInfo\->new($pathname);
\&
\& my $dist = $d\->dist; # "CPAN\-DistnameInfo"
\& my $version = $d\->version; # "0.02"
\& my $maturity = $d\->maturity; # "released"
\& my $filename = $d\->filename; # "CPAN\-DistnameInfo\-0.02.tar.gz"
\& my $cpanid = $d\->cpanid; # "GBARR"
\& my $distvname = $d\->distvname; # "CPAN\-DistnameInfo\-0.02"
\& my $extension = $d\->extension; # "tar.gz"
\& my $pathname = $d\->pathname; # "authors/id/G/GB/GBARR/..."
\&
\& my %prop = $d\->properties;
.Ve
.SH DESCRIPTION
.IX Header "DESCRIPTION"
Many online services that are centered around CPAN attempt to
associate multiple uploads by extracting a distribution name from
the filename of the upload. For most distributions this is easy as
they have used ExtUtils::MakeMaker or Module::Build to create the
distribution, which results in a uniform name. But sadly not all
uploads are created in this way.
.PP
\&\f(CW\*(C`CPAN::DistnameInfo\*(C'\fR uses heuristics that have been learnt by
to extract the distribution name and
version from filenames and also report if the version is to be
treated as a developer release
.PP
The constructor takes a single pathname, returning an object with the following methods
.IP cpanid 4
.IX Item "cpanid"
If the path given looked like a CPAN authors directory path, then this will be the
the CPAN id of the author.
.IP dist 4
.IX Item "dist"
The name of the distribution
.IP distvname 4
.IX Item "distvname"
The file name with any suffix and leading directory names removed
.IP filename 4
.IX Item "filename"
If the path given looked like a CPAN authors directory path, then this will be the
path to the file relative to the detected CPAN author directory. Otherwise it is the path
that was passed in.
.IP maturity 4
.IX Item "maturity"
The maturity of the distribution. This will be either \f(CW\*(C`released\*(C'\fR or \f(CW\*(C`developer\*(C'\fR
.IP extension 4
.IX Item "extension"
The extension of the distribution, often used to denote the archive type (e.g. \*(Aqtar.gz\*(Aq)
.IP pathname 4
.IX Item "pathname"
The pathname that was passed to the constructor when creating the object.
.IP properties 4
.IX Item "properties"
This will return a list of key\-value pairs, suitable for assigning to a hash,
for the known properties.
.IP version 4
.IX Item "version"
The extracted version
.SH AUTHOR
.IX Header "AUTHOR"
Graham Barr
.SH COPYRIGHT
.IX Header "COPYRIGHT"
Copyright (c) 2003 Graham Barr. All rights reserved. This program is
free software; you can redistribute it and/or modify it under the same
terms as Perl itself.