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::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters - Don't use

Affiliation

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

Author

       Elliot Shank "<perl@galumph.com>"

Configuration

       This policy has three options: "single_quote_allowed_operators", "double_quote_allowed_operators", and
       "back_quote_allowed_operators", which control which operators are allowed to use each of "'", """, "`" as
       delimiters, respectively.

       The values allowed for these options are a whitespace delimited selection of the "m", "q", "qq", "qr",
       "qw", "qx", "s", "tr", and "y" operators.

       By default, double quotes and back quotes (backticks) are not allowed as delimiters for any operators and
       single quotes are allowed as delimiters for the "m", "qr", "qx", and "s" operators.  These defaults are
       equivalent to having the following in your .perlcriticrc:

           [ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters]
           single_quote_allowed_operators = m s qr qx
           double_quote_allowed_operators =
           back_quote_allowed_operators =

Description

       With the obvious exception of using single-quotes to prevent interpolation, using quotes with the quote-
       like operators kind of defeats the purpose of them and produces obfuscated code, causing problems for
       future maintainers and their editors/IDEs.

           $x = q"q";                #not ok
           $x = q'q';                #not ok
           $x = q`q`;                #not ok

           $x = qq"q";               #not ok
           $x = qr"r";               #not ok
           $x = qw"w";               #not ok

           $x = qx`date`;            #not ok

           $x =~ m"m";               #not ok
           $x =~ s"s"x";             #not ok
           $x =~ tr"t"r";            #not ok
           $x =~ y"x"y";             #not ok

           $x =~ m'$x';              #ok
           $x =~ s'$x'y';            #ok
           $x = qr'$x'm;             #ok
           $x = qx'finger foo@bar';  #ok

Name

       Perl::Critic::Policy::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters - Don't use
       quotes ("'", """, "`") as delimiters for the quote-like operators.

Suggested By

       Michael Schwern

See Also