sub union_of_h1_h2 { my ($h1_ref, $h2_ref) = @_; my %output = %$h1_ref; for my $topkey (keys %{$h2_ref}) { for my $filename (keys %{$h2_ref{$topkey}}) { for my $bottomkey (keys %{$h2_ref{$topkey}{$filename}}) { $output{$topkey}{$filename}{$bottomkey} = $h2_ref->{$topkey}{$filename}{$bottomkey} unless (Condition); } } } return \%output; }