manpagez: man pages & more
man Perl::Critic::Policy::Objects::ProhibitIndirectSyntax(3)
Home | html | info | man
Perl::Critic::Policy::Objects::ProhibitIndirectSyntax(3)



NAME

       Perl::Critic::Policy::Objects::ProhibitIndirectSyntax - Prohibit
       indirect object call syntax.


AFFILIATION

       This Policy is part of the core Perl::Critic distribution.


DESCRIPTION

       Indirect object syntax is commonly used in other object-oriented
       languages for instantiating objects. Perl allows this, but to say that
       it supports it may be going too far. Instead of writing

           my $foo = new Foo;

       it is preferable to write

           my $foo = Foo->new;

       The problem is that Perl needs to make a number of assumptions at
       compile time to disambiguate the first form, so it tends to be fragile
       and to produce hard-to-track-down bugs.


CONFIGURATION

       Indirect object syntax is also hard for Perl::Critic to disambiguate,
       so this policy only checks certain subroutine calls. The names of the
       subroutines can be configured using the "forbid" configuration option:

           [Objects::ProhibitIndirectSyntax]
           forbid = create destroy

       The "new" subroutine is configured by default; any additional "forbid"
       values are in addition to "new".


CAVEATS

       The general situation can not be handled via static analysis.


SEE ALSO

       Perl::Critic::Policy::Dynamic::NoIndirect(3) and indirect both do a better
       job with this, but they require that you compile/execute your code.


AUTHOR

       Thomas R. Wyant, III wyant at cpan dot org


COPYRIGHT

       Copyright (c) 2009-2011 Tom Wyant.

       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.28.2          Perl::Critic::Policy::Objects::ProhibitIndirectSyntax(3)

perl-critic 1.134.0 - Generated Tue Jun 4 13:18:41 CDT 2019
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.