With the regexp that you posted:
The reason is that when the engine first gets to the print statement, the match is still succeeding, so the print proceeds; but, the first match eventually fails, because of the /, so the engine starts searching again, and finds (and prints) the second match. I'm not sure if this answers your question, but at least it illustrates what appears like an iteration.'<a /><b >' =~ /<([\w\d]+)\s+(?{ print $^N })\s*?>/; __END__ ab
BTW, \w implies \d, so [\w\d] is redundant.
Update: Also, if in the regexp in Obfuscated regexp you get rid of the \1 at the very end, then the print statements get executed only once. Clearly this \1 is what causes the successive matches to fail, thus forcing the engine to start searching again. Once it is removed, the match succeeds, and the engine stops.
the lowliest monk
In reply to Re: Global Regex sans //g
by tlm
in thread Global Regex sans //g
by eibwen
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |