00112233222000 #### (3,1), (5,2), (7,3), (9,2), (12,0) #### my @intervals = ([3,11], [5,8], [7,11]); for (@intervals) { my ($start,$end) = @$_; $delta{$start}++; $delta{$end+1}--; } my $total = 0; my @points; for (sort { $a <=> $b } keys %delta) { next if $delta{$_} == 0; ## update: added this line $total += $delta{$_}; push @points, [$_, $total]; }