use warnings; use strict; use Data::Dumper; my %hoh; $hoh{element1} = { start => 1, middle => 5 }; my @append = ( { test => 1, key => 3 }, { abc => 2, xyz => 5 } ); @{$hoh{element1}}{map keys %{$_}, @append} = map values %{$_}, @append; print Dumper \%hoh;