Hello perltux, and welcome to the Monastery!
How do I get the second pattern match to assign all matches as multiple elements to the array?
I think you need to capture the multiple matches first, then separate them using a loop:
my @chunks = $sysex_dump =~ /\xF0C.[~z]((?:..LM 0087[A-Z][A-Z].+?)+)\ +xF7/gs; my @parts; for (@chunks) { push @parts, $1 while /(..LM 0087[A-Z][A-Z].+?)/gs; }
This code is untested (you provided no sample data), but it should give you a workable approach. Note that in the first regex, the second + quantifier needs to be within the capturing parentheses, so I have added non-capturing parentheses (?:) to define this quantifier’s scope.
Update: I see you have added a “self contained code example” to your original post. From this, it appears that the data to be matched contains literal . characters (periods, full stops.) But your regex matches these with:
(..LM 0087[A-Z][A-Z].+?) # ^^ <= here they are
which matches any two characters. To match periods only, backslash them in the regex:
/\xF0C.[~z](\.\.LM 0087[A-Z][A-Z].+?)+\xF7/s
Hope that helps,
Athanasius <°(((>< contra mundum
In reply to Re: pattern matching
by Athanasius
in thread pattern matching
by perltux
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |