Risk-Aware AI Code Review for Business-Critical Systems
LiveReview LiveReview Explore LiveReview

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