GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  PERL::CRITIC::POLICY::MODULES::PROHIBITPOSIXIMPORT (3)

.ds Aq ’

NAME

Perl::Critic::Policy::Modules::ProhibitPOSIXimport - don’t import the whole of POSIX into a module

CONTENTS

DESCRIPTION

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 you’re only using a few things.



    package Foo;
    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 that’s 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.

    Allowed Forms

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.



    #!/usr/bin/perl
    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.



    package Foo;
    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).



    package Foo;
    use POSIX qw(dup ENOENT); # ok
    ...
    my $fd = dup(0);



A full import is allowed in a module if there’s 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 shouldn’t be burdened by a POSIX:: on every call or by maintaining a list of explicit imports.



    package Foo;
    use POSIX;         # ok
    ...
    tzset(); dup(1)... # 15 or more calls to POSIX stuff



    Disabling

If you don’t care this sort of thing you can always disable ProhibitPOSIXimport from your .perlcriticrc in the usual way (see CONFIGURATION in Perl::Critic),



    [-Modules::ProhibitPOSIXimport]



SEE ALSO

POSIX, Perl::Critic::Pulp, Perl::Critic, Perl::Critic::Policy::Subroutines::ProhibitCallsToUndeclaredSubs

HOME PAGE

http://user42.tuxfamily.org/perl-critic-pulp/index.html

COPYRIGHT

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 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/>.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 PERL::CRITIC::POLICY::MODULES::PROHIBITPOSIXIMPORT (3) 2015-01-04

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.