Login
Add a separate configuration item, 'allow_perl_version', to
authorTom Wyant <harryfmudd@comcast.net>
Fri, 9 Dec 2011 00:14:08 +0000 (00:14 +0000)
committerTom Wyant <harryfmudd@comcast.net>
Fri, 9 Dec 2011 00:14:08 +0000 (00:14 +0000)
Modules::RequireExplicitPackage to allow things like 'use 5.010;', since
this is the one use of 'use' not covered in commits 4098 and 4099 (RT
#72660).

Changes
lib/Perl/Critic/Policy/Modules/RequireExplicitPackage.pm
t/Modules/RequireExplicitPackage.run

diff --git a/Changes b/Changes
index 35688fb..d0cc266 100644 (file)
--- a/Changes
+++ b/Changes
@@ -14,6 +14,9 @@ Next release, whenever it is:
     * Modules::RequireExplicitPackage now has configuraion option
       allow_import_of, to allow the import of specified modules before
       the package statement. RT #72660.
+    * Modules::RequireExplicitPackage now has configuraion option
+      allow_perl_version, to allow the specification of a Perl version
+      before the package statement.
     * RegularExpressions::ProhibitEnumeratedClasses no longer thinks
       that [A-Za-z_] matches \w. RT #69322.
     * RegularExpressions::ProhibitUnusedCaptures now skips the first
index ac59dce..74fd23b 100644 (file)
@@ -37,6 +37,12 @@ sub supported_parameters {
             description    => q{Allow the specified modules to be imported outside a package},
             behavior       => 'string list',
         },
+        {
+            name           => 'allow_perl_version',
+            description    => q{Allow the specification of a Perl version outside a package},
+            default_string => '0',
+            behavior       => 'boolean',
+        },
     );
 }
 
@@ -96,6 +102,9 @@ sub _is_statement_of_interest {
         if ( my $module = $elem->module() ) {
             $self->{_allow_import_of}{$module}
                 and return $FALSE;
+        } elsif ( $elem->version() ) {
+            $self->{_allow_perl_version}
+                and return $FALSE;
         }
     }
 
@@ -162,6 +171,13 @@ following to your F<.perlcriticrc> file
 The C<allow_import_of> configuration option takes multiple module names,
 separated by spaces.
 
+It may also be desirable to allow a version of Perl to be specified
+before the package declaration, e.g. C<use 5.010;>. To allow this, add
+the following to your F<.perlcriticrc> file
+
+    [Modules::RequireExplicitPackage]
+    allow_perl_version = 1
+
 
 =head1 IMPORTANT CHANGES
 
index 823c0c2..e1e1669 100644 (file)
@@ -120,6 +120,17 @@ package Foo::Bar;
 
 #-----------------------------------------------------------------------------
 
+## name Allow exception for Perl version specification
+## failures 0
+## parms { allow_perl_version => 1 }
+## cut
+
+use 5.006002;
+
+package Foo::Bar;
+
+#-----------------------------------------------------------------------------
+
 ##############################################################################
 #      $URL$
 #     $Date$