Manual Reference Pages - PERL::CRITIC::POLICY::MODULES::PROHIBITPOSIXIMPORT (3)
Perl::Critic::Policy::Modules::ProhibitPOSIXimport - dont import the whole of POSIX into a module
This policy is part of the Perl::Critic::Pulp
add-on. It asks you not to use POSIX with an import of all the symbols
from that module if youre only using a few things.
use POSIX; # bad
The aim is to save some memory, and maybe run a bit faster. A full POSIX
import adds about 550 symbols to your module and thats about 30 to 40
kbytes in Perl 5.10 on a 32-bit system, or about 115 kbytes in Perl 5.8. If
lots of modules do this it adds up.
As noted in the POSIX module docs, the way it exports everything by
default is an historical accident, not something to encourage.
A full import is allowed in package main, which is the top-level of a
script etc, since in a script you want convenience rather than a bit of
memory, at least initially.
use POSIX; # ok
An import of no symbols is allowed and you then add a POSIX:: qualifier
to each call or constant. Qualifiers like this can make it clear where the
function is coming from.
use POSIX (); # ok
my $fd = POSIX::dup(0);
if ($! == POSIX::ENOENT())
An import of an explicit set of functions and constants is allowed. This
allows short names without the memory penalty of a full import. However it
can be error-prone to update the imports with what you actually use (see
ProhibitCallsToUndeclaredSubs for some checking).
use POSIX qw(dup ENOENT); # ok
my $fd = dup(0);
A full import is allowed in a module if theres 15 or more calls to POSIX
module functions. This rule might change or be configurable in the future,
but the intention is that a module making heavy use of POSIX shouldnt be
burdened by a POSIX:: on every call or by maintaining a list of explicit
use POSIX; # ok
tzset(); dup(1)... # 15 or more calls to POSIX stuff
If you dont care this sort of thing you can always disable
ProhibitPOSIXimport from your .perlcriticrc in the usual way (see
CONFIGURATION in Perl::Critic),
Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 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
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
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/>.
|perl v5.20.3 ||PERL::CRITIC::POLICY::MODULES::PROHIBITPOSIXIMPORT (3) ||2015-01-04 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.