#! perl use strict; use warnings; use Data::Dump; my %h = map { $_ => 0 } qw(kept notkept repaired); my $a = [ [ 'kept', '1', ], [ 'repaired', '3', ], ]; dd \%h; %h = (%h, map { $_->[0] => $_ ->[1] } @$a); dd \%h; #### 0:16 >perl 1022_SoPW.pl { kept => 0, notkept => 0, repaired => 0 } { kept => 1, notkept => 0, repaired => 3 } 0:16 > #### # Overwrite defaults with arrayref OUTER: for my $i (@{$a}) { for my $t (@t) { if ($i->[0] eq $t->{label}) { $t->{value} = $i->[1]; next OUTER; } } }