use strict; use warnings; use Data::Dumper; my %hash = ( one => [ 1, 2, 4 ], two => [ 5, 7, 9 ], ); my @add = ( 7, 8, 15 ); $hash{one} = [ map { $hash{one}{$_} + $add[$_] } (0 .. $#add) ]; print Dumper \%hash;