The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Pod::MinimumVersion - Perl version for POD directives used

SYNOPSIS

 use Pod::MinimumVersion;
 my $pmv = Pod::MinimumVersion->new (filename => '/some/foo.pl');
 print $pmv->minimum_version,"\n";
 print $pmv->reports;

DESCRIPTION

Caution: This is work in progress.

Pod::MinimumVersion parses the POD in a Perl script, module, or document, and reports what version of Perl is required to process the directives in it with pod2man etc.

CHECKS

The following POD features are identified.

  • =for, =begin and =end new in 5.004.

  • L<display text|target> style display part, new in 5.005.

  • C<< foo >> double-angles, new in 5.6.0.

  • =head3 and =head4, new in 5.8.0.

  • L<http://some.where.com>, new in 5.8.0. (Prior versions take the "/" as a "section" part, giving very poor output.)

  • E<apos>, E<sol>, E<verbar> chars, new in 5.8.0. (Documented in 5.6.0, but pod2man doesn't recognise them until 5.8.)

  • =encoding command, new in 5.10.0. (Documented in 5.8.0, but pod2man doesn't recognise it until 5.10.)

POD syntax errors are quietly ignored currently. The intention is only to check what pod2man would act on, but it's probably a good idea to use Pod::Checker first.

FUNCTIONS

$pmv = Pod::MinimumVersion->new (key => value, ...)

Create and return a new Pod::MinimumVersion object which will analyze a document. The document is supplied as one of

    filehandle => $fh,
    string     => 'something',
    filename   => '/my/dir/foo.pod',

For filehandle and string, a filename can be supplied too to give a name in the reports. The handle or string is what's actually read though.

The above_version option lets you set a Perl version you use, so reports are only about features above that level.

    above_version => '5.006',
$version = $pmv->minimum_version ()
$report = $pmv->minimum_report ()

Return the minimum Perl required for the document in $pmv.

minimum_version returns a version object (see version). minimum_report returns a Pod::MinimumVersion::Report object (see "REPORT OBJECTS" below).

@reports = $pmv->reports ()

Return a list of Pod::MinimumVersion::Report objects concerning the document in $pmv.

These multiple reports let you identify multiple places that a particular Perl is required. With the above_version option the reports are still only about things higher than that.

minimum_version and minimum_report simply give the highest Perl among these multiple reports.

REPORT OBJECTS

A Pod::MinimumVersion::Report object holds a location within a document and a reason that a particular Perl is needed at that point. The hash fields are

    filename   string
    linenum    integer, with 1 for the first line
    version    version.pm object
    why        string
$str = $report->as_string

Return a formatted string for the report. Currently this is in GNU file:line style, simply

    <filename>:<linenum>: <version> due to <why>

SEE ALSO

version, Perl::MinimumVersion, Perl::Critic::Policy::Compatibility::PodMinimumVersion

HOME PAGE

http://user42.tuxfamily.org/perl-critic-pulp/index.html

COPYRIGHT

Copyright 2009, 2010, 2011 Kevin Ryde

Perl-Critic-Pulp is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

Perl-Critic-Pulp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Perl-Critic-Pulp. If not, see <http://www.gnu.org/licenses/>.