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; } #### (..LM 0087[A-Z][A-Z].+?) # ^^ <= here they are #### /\xF0C.[~z](\.\.LM 0087[A-Z][A-Z].+?)+\xF7/s