my @a = ( [2,5,10,5,12,6,21,5,10,12,23], [5,6,11,10,5,10,6,21,5,1,9], [6,5,10,15,21] ); my $m = 2; my $n = 2; my %h; for my $ref (@a) { for my $i ( 0 .. (@$ref-$n) ) { for my $j ( ($i+$n-1) .. @$ref-1 ) { $h{ join ',', (@$ref)[$i..$j] }++; } } } for my $seq( sort { $h{$b}<=>$h{$a} } keys %h ) { print "$h{$seq}: $seq\n" if $h{$seq} >= $m; } __DATA__ 4: 5,10 2: 6,21,5 2: 10,5 2: 6,21 2: 21,5