use strict; use warnings; use Data::Dumper; my @prizes = ( { 'Timestamp' => '2005-11-07 11:18:01', 'WinnerId' => '2026', 'lineid' => '2026', }, { 'Timestamp' => '2005-01-07 11:18:01', 'WinnerId' => '2001', 'lineid' => '2001', }, { 'Timestamp' => '2005-05-07 11:18:01', 'WinnerId' => '2015', 'lineid' => '2015', }, ); my %month = ( '01' => 'January', '02' => 'February', '03' => 'March', '04' => 'April', '05' => 'May', '06' => 'June', '07' => 'July', '08' => 'August', '09' => 'September', '10' => 'October', '11' => 'November', '12' => 'December', ); my @mapped_prizes = map {[$month{(split (/-/, $_->{'Timestamp'}))[1]} => $_]} @prizes; print Dumper (\@mapped_prizes);