http://www.perlmonks.org?node_id=1085205


in reply to look-ahead greed changed between perl releases?

Your reported behaviour in 5.16.3 is what I expect. I do not have a 5.12.4 handy to test.

The look ahead is zero-width which means it does not consume any of the input. The regexp matches starting which the s so a % is placed before it. The regexp engine then resumes searching, at the next character and matches starting at the t. This process repeats until there is not enough hyphenated upper case letters to match.

Replies are listed 'Best First'.
Re^2: look-ahead greed changed between perl releases?
by raygun (Scribe) on May 06, 2014 at 18:15 UTC
    So that overrides the greediness precept? The perlre document isn't clear on this, so I wasn't sure which behavior was considered correct.

    I no longer have a 5.12.4 handy either: I discovered this issue after upgrading perl and finding my code was no longer working as it had before. Was this a bug in a 5.12.4? I can't find anything in the perl*delta docs that lead me to believe this is an intentional behavior change.

      No, it does not override the greediness. The regexp still matches that longest string. But this is just a look ahead. Once the match/substitution is made, the regexp engine starts searching again after the first character matched.

      amon below has a great graphical view of what is happening (Re: look-ahead greed changed between perl releases?).