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


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:

  single_quote_allowed_operators = m s qr qx
  double_quote_allowed_operators =
  back_quote_allowed_operators =




Elliot Shank <perl@galumph.com>


Copyright (c) 2007 Elliot Shank. All rights reserved.

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.