Rechercher une page de manuel
Perl::Critic::Policy::Subroutines::ProtectPrivateSubs.3pm
Langue: en
Version: 2009-03-07 (debian - 07/07/09)
Section: 3 (Bibliothèques de fonctions)
NAME
Perl::Critic::Policy::Subroutines::ProtectPrivateSubs - Prevent access to private subs in other packages.AFFILIATION
This Policy is part of the core Perl::Critic distribution.DESCRIPTION
By convention Perl authors (like authors in many other languages) indicate private methods and variables by inserting a leading underscore before the identifier. This policy catches attempts to access private variables from outside the package itself.The subroutines in the POSIX package which begin with an underscore (e.g. "POSIX::_POSIX_ARG_MAX") are not flagged as errors by this policy.
CONFIGURATION
You can define what a private subroutine name looks like by specifying a regular expression for the "private_name_regex" option in your .perlcriticrc:[Subroutines::ProtectPrivateSubs] private_name_regex = _(?!_)\w+
The above example is a way of saying that subroutines that start with a double underscore are not considered to be private. (Perl::Critic, in its implementation, uses leading double underscores to indicate a distribution-private subroutine--- one that is allowed to be invoked by other Perl::Critic modules, but not by anything outside of Perl::Critic.)
You can configure additional subroutines to accept by specifying them in a space-delimited list to the "allow" option:
[Subroutines::ProtectPrivateSubs] allow = FOO::_bar FOO::_baz
These are added to the default list of exemptions from this policy. Allowing a subroutine also allows the corresponding method call. So "FOO::_bar" in the above example allows both "FOO::_bar()" and "FOO->_bar()".
HISTORY
This policy is inspired by a similar test in B::Lint.BUGS
Doesn't forbid "$pkg->_foo()" because it can't tell the difference between that and "$self->_foo()".SEE ALSO
Perl::Critic::Policy::Variables::ProtectPrivateVarsAUTHOR
Chris Dolan <cdolan@cpan.org>COPYRIGHT
Copyright (c) 2006-2009 Chris Dolan.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.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre