logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Perl::Critic::Policy::Subroutines::ProhibitBuiltinHomonyms - Don't declare your own "open" function.

Affiliation

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

Author

       Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

Caveats

       It is reasonable to declare an object method with the same name as a Perl built-in function, since they
       are easily distinguished from each other.  However, at this time, Perl::Critic cannot tell whether a
       subroutine is static or an object method.

Configuration

       You can configure additional builtin homonyms to accept by specifying them in a space-delimited list to
       the "allow" option:

           [Subroutines::ProhibitBuiltinHomonyms]
           allow = default index

       These are added to the default list of exemptions from this policy. So the above allows "sub default {}"
       and "sub index {}".

Description

       Common sense dictates that you shouldn't declare subroutines with the same name as one of Perl's built-in
       functions or keywords.  See perlfunc for a list of built-in functions; see perlsyn for keywords.

         sub open {}    #not ok
         sub exit {}    #not ok
         sub print {}   #not ok
         sub foreach {} #not ok
         sub if {}      #not ok

         #You get the idea...

       Exceptions are made for "BEGIN", "END", "INIT" and "CHECK" blocks, as well as "AUTOLOAD", "DESTROY", and
       "import" subroutines.

Name

       Perl::Critic::Policy::Subroutines::ProhibitBuiltinHomonyms - Don't declare your own "open" function.

See Also