Ok, that clarifies things. Now that I understand what is happening, it is straightforward to recognise and fix the problem. A sentence in the documentation might help other perl 5 transitioners from getting bitten, perhaps at the explanation of the * quantifier.
> On 21 Sep 2016, at 6:35 PM, Sam S. via RT <perl6-bugs-follo...@perl.org> > wrote: > > For the record the problems the auto-advance feature causes even in Perl 5 > (where embedded code blocks are experimental and rarely used), are twofold: > > 1) Writing an infinite loop can be indicative of a programmer mistake, and > the auto-advance feature hides it by making the regex "do something" (which > may or may not be what the programmer intended) instead of hanging (which > would have caused the programmer to re-write the regex). > > 2) It can cause mysterious-seeming double captures. When there is a capture > group in a quantified zero-width assertion, it will capture the same thing > twice, because auto-advance kicks in when the cursor has not advanced after > *two* iterations. Now, Perl 5 lets repeated captures of the same capture > group overwrite each other, so this does not normally show up other than as a > performance degradation (whereas in Perl 6 it would cause the same > sub-matches to appear twice in $/). But it can show up in even Perl 5 with > `while(m//g) { }` global matching. I remember a discussion on perlmonks a few > years ago, where even experienced Perl hackers were tearing their hair out > trying to figure out why such a while loop iterated over the same match twice.