There's more than one way to do things | |
PerlMonks |
Re: A refactoring trap ( regex /x modifier activates new metacharacters)by LanX (Saint) |
on Feb 18, 2015 at 01:39 UTC ( [id://1117060]=note: print w/replies, xml ) | Need Help?? |
I just ran into the same problem and it took me a while to debug it. Wanted write a warning thread ... but of course PM had it already, so I just need pushing it up again. =) Shortly stated: When composing regexes from smaller parts be aware that " " and "#" are real new metacharacters under /x and not only syntactic sugar on the top level.
"$a$a" becomes "#x#x" which is an empty regex under /x since it starts with a comment. One solution¹ is to pre-compile the smaller parts w/o x-flag
another one escaping or using a character class
simply using quotemeta might bite you again when you wanted to use other metacharacters. NB: same problem with whitespace.
¹) IMHO the cleanest and still unmentioned in this thread :)
In Section
Meditations
|
|