#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %base_data; $base_data{test} = { k1 => { k1 => 1, k2 => 2, }, }; my $add_data = { k2 => { k1 => 1, k2 => 2, }, }; # eleganter? for my $key (keys %$add_data) { $base_data{test}{$key} = $add_data->{$key}; } print Dumper $base_data{test};