my @array; foreach (0..2) { my $d = $data1->[$_]; $d->{sizes} = $data2; push(@array,$d); } print Dumper(\@array); $VAR1 = [ { 'food' => 'apple', 'shape' => 'round', 'sizes' => [ { 'small' => 'bunny', 'big' => 'cow' }, { 'small' => 'mouse', 'big' => 'horse' } ] }, { 'food' => 'pear', 'shape' => 'square', 'sizes' => $VAR1->[0]{'sizes'} }, { 'food' => 'grape', 'shape' => 'oval', 'sizes' => $VAR1->[0]{'sizes'} } ];