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.
|
|---|