my @tmpHash; my $lastKey = $keys[$#keys]; %{$tmpHash[$#keys]{$tblData{$lastKey}}} = %tblData; if ($#keys >= 1) { for (my $n = $#keys - 1; $n >= 0; $n--) { %{$tmpHash[$n]{$tblData{$keys[$n]}}} = %{$tmpHash[$n+1]}; } } %tableData = (%tableData, %{$tmpHash[0]});