use warnings; use strict; my %data; while () { my @cols = split; push @{ $data{$cols[0]} }, $cols[1] if $cols[3] > 4; } for my $k (sort keys %data) { my $i = 1; my @ns = @{ $data{$k} }; my $n0 = shift @ns; my @ns2 = $n0; for my $n (@ns) { if ($n == $n0+1) { push @ns2, $n; $i++; } else { print "$k,$ns2[0],$ns2[-1],$i\n"; @ns2 = $n; $i = 1; } $n0 = $n; } print "$k,$ns2[0],$ns2[-1],$i\n"; } __DATA__ C10000035 12 C 4 ....^>. HHFCC C10000035 13 C 6 .....^>. HHFFCC C10000035 14 C 6 ...... JHFFCC C10000035 15 C 6 ...... IHFFFC C10000035 16 A 4 .GG...^>G JGHFFFC C10000035 17 C 7 ....... JGHFFFC C10000035 18 C 8 .......^]. JIHHFFC@ C10000035 19 A 8 ........ IJHHFFFC C10000035 20 C 9 ..T...T.^]. JIHGHFF@C C10000035 21 G 10 A........^]. AJJHHHFDCC C10000040 30 C 5 ....^>. HHFCC C10000040 31 C 6 .....^>. HHFFCC C10000040 32 C 6 ...... JHFFCC C10000040 33 C 6 ...... IHFFFC C10000040 34 C 4 ...... IHFFFC C10000040 35 C 4 ...... IHFFFC C10000040 36 C 4 ...... IHFFFC C10000040 37 C 6 ...... IHFFFC C10000040 38 C 6 ...... IHFFFC