Perl::CriticPerl::Critic::Policy::Modules::ProhibitConditionalUseStatements(3)NAMEPerl::Critic::Policy::Modules::ProhibitConditionalUseStatements - Avoid
putting conditional logic around compile-time includes.
AFFILIATION
This Policy is part of the core Perl::Critic distribution.
DESCRIPTION
Modules included via "use" are loaded at compile-time. Placing
conditional logic around the "use" statement has no effect on whether
the module will be loaded. Doing so can also serve to confuse the
reader as to the author's original intent.
If you need to conditionally load a module you should be using
"require" instead.
This policy will catch the following forms of conditional "use"
statements:
# if-elsif-else
if ($a == 1) { use Module; }
if ($a == 1) { } elsif ($a == 2) { use Module; }
if ($a == 1) { } else { use Module; }
# for/foreach
for (1..$a) { use Module; }
foreach (@a) { use Module; }
# while
while ($a == 1) { use Module; }
# unless
unless ($a == 1) { use Module; }
# until
until ($a == 1) { use Module; }
# do-condition
do { use Module; } if $a == 1;
do { use Module; } while $a == 1;
do { use Module; } unless $a == 1;
do { use Module; } until $a == 1;
# operator-do
$a == 1 || do { use Module; };
$a == 1 && do { use Module; };
$a == 1 or do { use Module; };
$a == 1 and do { use Module; };
# non-string eval
eval { use Module; };
Including a module via "use" in bare blocks, standalone do blocks, or
string evals is allowed.
# bare block
{ use Module; }
# do
do { use Module; }
# string eval
eval "use Module";
CONFIGURATION
This Policy is not configurable except for the standard options.
AUTHOR
Peter Guzis <pguzis@cpan.org>
COPYRIGHT
Copyright (c) 2010-2011 Peter Guzis. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. The full text of this license can
be found in the LICENSE file included with this module.
perl v5.14.1Perl::Critic::Policy::Modules::ProhibitConditionalUseStatements(3)