Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Perl::Critic::Policy::UsereContributed:PerlcDocumentas::ProhibitPOSIXimport(3)

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

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 then 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, 2016, 2017 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/>.

perl v5.24.1		 Perl::Critic::Policy::Modules::ProhibitPOSIXimport(3)

NAME | DESCRIPTION | SEE ALSO | HOME PAGE | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Perl::Critic::Policy::Modules::ProhibitPOSIXimport&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help