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

NAME

Perl::Critic::Policy::Modules::ProhibitUseQuotedVersion - avoid quoted version number string in a "use" statement

DESCRIPTION

This policy is part of the Perl::Critic::Pulp addon. It prohibits a quoted version number string as the sole argument to a use or no statement.

    use Foo::Bar '1.50';      # bad
    use Foo::Bar 1.50;        # ok

    no Abc::Def '2.000_010';  # bad
    no Abc::Def 2.000_010;    # ok

The unquoted form uses Perl's builtin module version check and always works. The quoted form relies on the module in question to do the check. If it has no import then the quoted form is silently ignored, without the intended check.

Exporter which is used by many modules provides an import that checks a version number arg, so those modules are fine. But the idea of this policy is to do what works always, and on that basis is under the "bugs" theme (see "POLICY THEMES" in Perl::Critic).

The policy only applies to a single version number string argument, anything else is taken to be some module parameter.

    no Abc::Def '123', 'ABC';   # ok
    use lib '..';               # ok

If you're a bit nervous about floating point version numbers because they're often not exactly representable in binary, well that's true, but in practice it works out ok, due to either converting the same way everywhere in the program or being treated as a string in the "version" module anyway.

If you're confident about the import in modules you use and prefer the string form you can always disable ProhibitUseQuotedVersion from your .perlcriticrc in the usual way,

    [-Modules::ProhibitUseQuotedVersion]

SEE ALSO

Perl::Critic::Pulp, Perl::Critic

HOME PAGE

http://www.geocities.com/user42_kevin/perl-critic-pulp/index.html

COPYRIGHT

Copyright 2009 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.