|Perl Monk, Perl Meditation|
Re: A refactoring trap ( regex /x modifier activates new metacharacters)by LanX (Archbishop)
|on Feb 18, 2015 at 01:39 UTC||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.
PS: Je suis Charlie!
¹) IMHO the cleanest and still unmentioned in this thread :)