Pod::M...Version(3pm)

πŸ“¦
version 50 Β· 6 versions
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– Pod::MinimumVersion β€” NAME energy πŸ’–

okay bestie, this is Pod::MinimumVersion β€” it tells you which Perl version you actually need for the POD directives you used. no cap. πŸŽ€


✨ SYNOPSIS ✨

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

like, that's it. that's the whole vibe. πŸ¦‹


🌸 DESCRIPTION 🌸

so Pod::MinimumVersion parses the POD inside a Perl script, module, or document, and then it reports what version of Perl is required to process the directives in it with pod2man etc. she's a detective and she's good at her job πŸ’…


πŸ‘‘ CHECKS πŸ‘‘

here's every POD feature she sniffs out, bestie:

  • 5.004 β€” the new =for, =begin and =end ✨
  • 5.005 β€” the new L<display text|target> style display part πŸ’«
  • 5.6.0 β€” the new C<< foo >> etc double-angles πŸ‘€
  • 5.8.0 β€” the new =head3 and =head4 πŸŽ€
  • 5.8.0 β€” the new L<http://some.where.com> URLs. (before 5.8 the / is a section separator, which gives very poor output 😭)
  • 5.8.0 β€” the new E<apos>, E<sol>, E<verbar> chars. (they're documented in 5.6.0, but pod2man doesn't recognise them until 5.8. the disrespect πŸ™ˆ)
  • 5.10.0 β€” the new =encoding command. (documented in 5.8.0, but pod2man doesn't recognise it until 5.10. again. 😀)
  • 5.12.0 β€” the new L<display text|http://some.where.com> URL with text. (before 5.12 the combination of display part and URL was explicitly disallowed by perlpodspec. literally banned. πŸ’€)
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. πŸ™

J<< >> for Pod::MultiLang is recognised and is allowed for any Perl, including with double-angles. the assumption is that if you're writing that then you'll first crunch with the Pod::MultiLang tools, so it's not important what pod2man thinks of it. she's chill about it, periodt. πŸ’…


🫢 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 these:

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, bestie. don't get it twisted. ✨

the above_version option lets you set a Perl version of you have or are targeting, so reports are only about features above that level. iconic behaviour honestly.

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 number object (see version). minimum_report returns a Pod::MinimumVersion::Report object (see REPORT OBJECTS below). two icons, two jobs. 🌈

@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 only about things higher than that. she's thorough, she's giving main character energy. πŸ’œ

minimum_version and minimum_report are simply the highest Perl among these multiple reports. the queen of the pile. πŸ‘‘


πŸ¦‹ 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>

clean. minimal. slay. ✨


πŸ’œ SEE ALSO πŸ’œ

version, Pod::MultiLang, Perl::Critic::Policy::Compatibility::PodMinimumVersion

Perl::MinimumVersion, Perl::Critic::Policy::Modules::PerlMinimumVersion, Perl::Critic::Policy::Compatibility::PerlMinimumVersionAndWhy


🌐 HOME PAGE 🌐

http://user42.tuxfamily.org/pod-minimumversion/index.html

go visit her, she's lovely πŸ’–


Copyright 2009, 2010, 2011 Kevin Ryde

Pod-MinimumVersion 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. 🫢

Pod-MinimumVersion 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. (read it, bestie, it's important 😭)

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


okay that's the whole page, and the lil sign-off at the bottom says this is from perl v5.34.0, dated 2022-05-27, filed under Pod::M...Version(3pm). love that for her. bye bestie, go check your POD versions πŸ’…βœ¨πŸŽ€