#!/usr/bin/env perl -l use strict; use warnings; my @dd = qw/AA JJ CC M 1 1 3 4 D JJ 1 1 D M 3 3 4 D C M 3 3 3 D P Z/; my $in_group = 0; my (@group, @all_groups); for (@dd) { $in_group = 1 if $_ eq 'M'; next unless $in_group; push @group, $_; if ($_ eq 'D') { push @all_groups, [ @group ]; @group = (); $in_group = 0; } } print "@$_" for @all_groups; #### M 1 1 3 4 D M 3 3 4 D M 3 3 3 D