use warnings; use strict; use DateTime; use Data::Dumper; my @times = qw( 1176992127 1177011950 1177035464 1177059040 1177063718 1177074117 1177100432 1177135347 1177165344 1177193537 1177202407 1177222982 1177224344 1177271548 1177280164 1177290568 1177320406 1177369446 1177392779 1177418018 1177424739 1177450967 1177459364 1177488349 1177506719 1177533725 1177544267 1177554850 1177596791 ); my %date_count; foreach my $time (@times) { my $dt = DateTime->from_epoch( epoch => $time ); $date_count{$dt->year}->{$dt->month}->{$dt->day}->{$dt->hour}++; } print Dumper \%date_count; exit;