oracular (3) Perl::Critic::Policy::Community::IndirectObjectNotation.3pm.gz

Provided by: libperl-critic-community-perl_1.0.3-1_all bug

NAME

       Perl::Critic::Policy::Community::IndirectObjectNotation - Don't call methods indirectly

DESCRIPTION

       Perl allows a form of method call where the method name is first, followed by the invocant (class or
       object to call the method on), then the argument list.  This is an unfortunate legacy syntax that should
       no longer be used. See "Indirect Object Syntax" in perlobj and "REFERENCES" in indirect for more
       information.

        my $obj = new My::Class @args;   # not ok
        my $obj = My::Class->new(@args); # ok

       It is difficult to detect indirect object notation by static analysis, so this policy only forbids the
       "new" method call by default, as it is highly unlikely to be the name of a standard subroutine call.
       Consider using the indirect pragma to cause the code to warn or die when indirect object notation is
       used.

       This policy is a subclass of the Perl::Critic core policy
       Perl::Critic::Policy::Objects::ProhibitIndirectSyntax, and performs the same function but in the
       "community" theme.

AFFILIATION

       This policy is part of Perl::Critic::Community.

CONFIGURATION

       This policy can be configured, in the same way as its parent policy
       Perl::Critic::Policy::Objects::ProhibitIndirectSyntax, to attempt to forbid additional method names from
       being called indirectly. Be aware this may lead to false positives as it is difficult to detect indirect
       object notation by static analysis. The "new" subroutine is always forbidden in addition to these.

        [Community::IndirectObjectNotation]
        forbid = create destroy

AUTHOR

       Dan Book, "dbook@cpan.org"

       Copyright 2015, Dan Book.

       This library is free software; you may redistribute it and/or modify it under the terms of the Artistic
       License version 2.0.

SEE ALSO

       Perl::Critic, indirect

perl v5.34.0                                       2Perl::Critic::Policy::Community::IndirectObjectNotation(3pm)