.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" 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 .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . 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 turned on, 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 .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Parse::PMFile 3pm" .TH Parse::PMFile 3pm "2014-10-10" "perl v5.20.1" "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" Parse::PMFile \- parses .pm file as PAUSE does .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Parse::PMFile; \& \& my $parser = Parse::PMFile\->new($metadata, {VERBOSE => 1}); \& my $packages_info = $parser\->parse($pmfile); \& \& # if you need info about invalid versions \& my ($packages_info, $errors) = $parser\->parse($pmfile); \& \& # to check permissions \& my $parser = Parse::PMFile\->new($metadata, { \& USERID => \*(AqISHIGAKI\*(Aq, \& PERMISSIONS => PAUSE::Permissions\->new, \& }); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" The most of the code of this module is taken from the \s-1PAUSE\s0 code as of April 2013 almost verbatim. Thus, the heart of this module should be quite stable. However, I made it not to use pipe (\*(L"\-|\*(R") as well as I stripped database-related code. If you encounter any issue, that's most probably because of my modification. .PP This module doesn't provide features to extract a distribution or parse meta files intentionally. .SH "METHODS" .IX Header "METHODS" .SS "new" .IX Subsection "new" creates an object. You can also pass a hashref taken from \s-1META\s0.yml etc, and an optional hashref. Options are: .IP "\s-1ALLOW_DEV_VERSION\s0" 4 .IX Item "ALLOW_DEV_VERSION" Parse::PMFile usually ignores a version with an underscore as \s-1PAUSE\s0 does (because it's for a developer release, and should not be indexed). Set this option to true if you happen to need to keep such a version for better analysis. .IP "\s-1VERBOSE\s0" 4 .IX Item "VERBOSE" Set this to true if you need to know some details. .IP "\s-1FORK\s0" 4 .IX Item "FORK" As of version 0.17, Parse::PMFile stops forking while parsing a version for better performance. Parse::PMFile should return the same result no matter how this option is set, but if you do care, set this to true to fork as \s-1PAUSE\s0 does. .IP "\s-1USERID, PERMISSIONS\s0" 4 .IX Item "USERID, PERMISSIONS" As of version 0.21, Parse::PMFile checks permissions of a package if both \s-1USERID\s0 and \s-1PERMISSIONS \s0(which should be an instance of PAUSE::Permissions) are provided. Unauthorized packages are removed. .IP "\s-1UNSAFE\s0" 4 .IX Item "UNSAFE" Parse::PMFile usually parses a module version in a Safe compartment. However, this approach doesn't work smoothly under older perls (prior to 5.10) plus some combinations of recent versions of Safe.pm (2.24 and above) and version.pm (0.9905 and above) for various reasons. As of version 0.27, Parse::PMFile simply uses \f(CW\*(C`eval\*(C'\fR to parse a version under older perls. If you want it to use always \f(CW\*(C`eval\*(C'\fR (even under recent perls), set this to true. .SS "parse" .IX Subsection "parse" takes a path to a .pm file, and returns a hash reference that holds information for package(s) found in the file. .SH "SEE ALSO" .IX Header "SEE ALSO" Parse::LocalDistribution, PAUSE::Permissions .PP Most part of this module is derived from \s-1PAUSE\s0 and CPAN::Version. .PP .PP .SH "AUTHOR" .IX Header "AUTHOR" Andreas Koenig .PP Kenichi Ishigaki, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright 1995 \- 2013 by Andreas Koenig for most of the code. .PP Copyright 2013 by Kenichi Ishigaki for some. .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.