in reply to Re: Interpolation differences between Strings and Regular Expressions (weight)
in thread Interpolation differences between Strings and Regular Expressions

mostly just greedy parsing so it always pulls in the trailing {...} to make a hash deref

Similarly, if the lexer in the regexp engine doesn't find a closing curly, the opening curly automatically loses its meta aspect...

print "a{5" =~ /a{5/

... prints 1. This could be the source of annoying errors if you're not careful. The explanation I received was that in terms of costs and benefits, to maintain sufficient context to maintain the ability to report the error would be too much of overhead during the parse. Or something like that, I'm a little hazy on the details by now.

Nor can I recall having been bitten by this behaviour, so the decision as it stands was probably correct.

• another intruder with the mooring in the heart of the Perl

  • Comment on Re^2: Interpolation differences between Strings and Regular Expressions (weight)
  • Download Code

Replies are listed 'Best First'.
Re^3: Interpolation differences between Strings and Regular Expressions (weight)
by TimToady (Parson) on Jun 13, 2007 at 19:35 UTC
    Actually, it was purely a decision to maintain some backward compatibility with earlier regex implementations that didn't treat curlies as metacharacters. In retrospect, probably a mistake, but traditional regex syntax is full of such mistakes, where rather than having a consistent backslashing rule, you have to put metacharacters where they don't make sense to match them literally, such as the infamous []x-] character class, which cannot be written in any other order, because the literal hyphen must come either first or last, and the right bracket may only come first, so the hyphen must come last.