You can avoid the nested loop by capturing the repeated elements as a single match and then splitting it:
my @match; while( <DATA> ) { m[^foo ((?:m \d+ )+)] and @match = split '(?<=\d) (?=m)', $1; print "@match"; }
Whether that is in any way 'better' is your call.
In reply to Re: Arbitrary number of captures in a regular expression
by BrowserUk
in thread Arbitrary number of captures in a regular expression
by grinder
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |