#!/usr/bin/perl use warnings; use strict; use Data::Dumper; my %parent = ( 'file3232.ext' => { e => 0, k => '0.0031', i => '26.9', j => '33.0', } ); my %returned = ( 'file3232.ext' => { e => 0, k => '0.1040', i => '26.7', j => '14.6', } ); for my $file (keys %returned) { for my $dataset (keys %{ $returned{$file} }) { $parent{$file}{$dataset} += $returned{$file}{$dataset}; } } print Dumper \%parent;