use Time::Parsedate; ... foreach my $day ( map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, parsedate( $_ ) ] } @dates ) { ... }