in reply to Is this a correct use of map?

I think you want +() or {}, but not +{}. With +{}, you will get one hashref per element – whereas I think you want a single hash, in which case you want either an expression (+()) or a single-expression block ({}). But I can only guess.

Other than that confusion, your map is fine, if a little hard to read. I’d put the month extraction code in a subroutine so I could give it a descriptive name. Rather than:

my @mapped_prizes = map +{ $month{(split(/-| /,$_->{'Timestamp'}))[1]} + => $_ }, @prizes;

I’d write:

sub month_from_datetime { my ( $datetime ) = @_; ( split m{-| }, $datetime )[1] } my %month_name = ( # ... ); my %mapped_prizes = map { my $month_num = month_from_datetime $_->{'Timestamp'}; $month_name{ $month_num } => $_; }, @prizes;

which makes it quite obvious what’s going on.

Makeshifts last the longest.