my $output = []; foreach my $hash (@$data) { my $cust_id = $hash->{cust_id}; foreach my $id (split ",", $order_data->{$cust_id}->{order_ids}) { $hash->{order_id} = $id; print Dumper $hash; # outputting here yields perfect data push @$output, $hash; } } print Dumper $output; # outputting here gives trashed data