#!/usr/bin/perl use warnings; use strict; use 5.010; my $binSize = 20; my %binTotals; while (){ chomp; my ($chr, $pos, $coverage) = split /\t/; $binTotals{int(($pos - 1) / $binSize)} += $coverage; } printf "%4d %d\n", 20 * (1 + $_), $binTotals{$_} for sort {$a <=> $b} keys %binTotals; __DATA__ chr 1 2 chr 4 2 chr 7 5 chr 22 5 chr 24 6 chr 38 10 chr 44 10 chr 50 20 chr 57 25 chr 60 30 chr 65 30