note
xdg
<p>Great suggestion! I forgot about regex debug mode. It looks like whatever the code in <code>(??{ code })</code> evaluates to is compiled into a regex (if it isn't one already) and then that regex is applied <i>in a separate scope</i> from the rest of the regex -- so it has its own match variables and so on. I wouldn't have expected that given the documentation in [doc://perlre].</p>
<p>In the debug output, the telltales appear to be "Entering embedded..." and "restoring...", as seen below.
</p>
<code>
Entering embedded `(.)\1*'
Setting an EVAL scope, savestack=31
0 <> <xx556xx> | 1: OPEN1
0 <> <xx556xx> | 3: REG_ANY
1 <x> <x556xx> | 4: CLOSE1
1 <x> <x556xx> | 6: CURLYX[1] {0,32767}
1 <x> <x556xx> | 10: WHILEM[1/1]
0 out of 0..32767 cc=140fafc
Setting an EVAL scope, savestack=37
1 <x> <x556xx> | 8: REF1
2 <xx> <556xx> | 10: WHILEM[1/1]
1 out of 0..32767 cc=140fafc
Setting an EVAL scope, savestack=43
2 <xx> <556xx> | 8: REF1
failed...
failed, try continuation...
2 <xx> <556xx> | 11: NOTHING
2 <xx> <556xx> | 12: END
Setting an EVAL scope, savestack=47
restoring \1 to -1(0)..1(no)
restoring \1..\1 to undef
</code>
<div class="pmsig"><div class="pmsig-268515">
<p>-xdg</p>
<p><small><i>Code written by xdg and posted on PerlMonks is <a href="http://creativecommons.org/licenses/publicdomain">public domain</a>. It is provided <b>as is</b> with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.</i></small></p>
</div></div>
512768
513030