Perl::...imiters(3pm)

okay so welcome to Perl::...imiters(3pm) from the User Contributed Perl Documentation, bestie β€” we're about to get into a Perl::Critic policy that is very "why would you do that" in the most affectionate way. πŸŽ€

✨ NAME ✨

It's giving Perl::Critic::Policy::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters β€” and the whole point is: don't use quotes (', ", and `) as delimiters for the quote-like operators, bestie. Like, just don't. πŸ’…

πŸ’– AFFILIATION πŸ’–

This Policy is part of the core Perl::Critic distribution. She's core, she's iconic, she's already in the group chat. πŸ‘‘

😭 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. No cap β€” future-you and future-your-editor are gonna be staring at that nonsense like 😭

$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

πŸŽ€ 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 ', ", and ` as delimiters, respectively. Very "choose your own adventure," but make it delimiter rules. πŸ¦‹

  • single_quote_allowed_operators β€” controls which operators are allowed to use ' as a delimiter.
  • double_quote_allowed_operators β€” controls which operators are allowed to use " as a delimiter.
  • back_quote_allowed_operators β€” controls which operators are allowed to use ` as a delimiter.

The values allowed for these options are a whitespace delimited selection of the m, q, qq, qr, qw, qx, s, tr, and y operators. Slay, but make it a whitelist. ✨

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 =

🌈 SUGGESTED BY 🌈

Michael Schwern. Respect the origin story. 🫢

πŸ‘‘ AUTHOR πŸ‘‘

Elliot Shank <perl@galumph.com> β€” author credit, preserved and treasured. πŸ’œ

Copyright (c) 2007-2011 Elliot Shank.

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.


mwah πŸ’‹ β€” source/version perl v5.42.0, dated 2024-10-23, and the manual name is Perl::...imiters(3pm). bye bestie 🫢

πŸ“¦ where this page comes from