use POSIX qw(floor); sub build_histogram { my ($bucket_size, @items) = @_; my %result; for (@items) { my $bucket = $bucket_size * floor($_ / $bucket_size); $result{$bucket}++; } return %result; }