Perl::Critic::Policy::RegularExpressions::RequireBracesForMultiline3pm
Use "{" and "}" to delimit multi-line regexps.
Affiliation
This Policy is part of the core Perl::Critic distribution.
Overview
Long regular expressions are hard to read. A good practice is to use the "x" modifier and break the regex into multiple lines with comments explaining the parts. But, with the usual "//" delimiters, the beginning and end can be hard to match, especially in a "s///" regexp. Instead, try using "{}" characters to delimit your expressions.
Compare these:
s/<a \s+ href="([^"]+)">(.*?)</a>/link=$1, text=$2/xms;
vs.
s{<a \s+ href="([^"]+)">(.*?)</a>}{link=$1, text=$2}xms;
Is that an improvement? Marginally, but yes. The curly braces lead the eye better.
Configuration
There is one option for this policy, "allow_all_brackets". If this is true, then, in addition to allowing "{}", the other matched pairs of "()", "[]", and "<>" are allowed.
Credits
Initial development of this policy was supported by a grant from the Perl Foundation.
Releases
10 releases since Debian 5.0 (Lenny); the text changed 9 times.