use warnings; use strict; use 5.010; my %base_positon; while(){ my ($chr, $start, $end)= split; $base_positon{$_}++ for ($start..$end); } # while( my($key, $value) = each %base_positon){ # say $key,"\t",$value; # } foreach my $key (sort(keys %base_positon) ){ say $key,"\t", $base_positon{"$key"}; } __DATA__ chrM 0 49 M01193:66:000000000-A386C:1:1112:20711:7517 0 + chrM 0 49 M01193:66:000000000-A386C:1:1112:12448:7530 0 + chrM 0 46 M01193:66:000000000-A386C:1:2108:26167:23502 0 + chrM 0 46 M01193:66:000000000-A386C:1:1101:17077:1444 0 - chrM 0 50 M01193:66:000000000-A386C:1:1101:17602:1741 42 + chrM 0 46 M01193:66:000000000-A386C:1:1101:13807:1866 0 + chrM 0 46 M01193:66:000000000-A386C:1:1101:16360:2204 0 - chrM 0 46 M01193:66:000000000-A386C:1:1101:13075:2236 0 - chrM 0 46 M01193:66:000000000-A386C:1:1101:15485:2329 0 - chrM 0 50 M01193:66:000000000-A386C:1:1101:13054:2607 42 -