my @keys = ('level1_1', 'level2_1', 'level3_1'); my %hash = (); $hash{data} = {}; my $hashref = $hash{data}; for my $i (0..$#keys) { $hashref->{$keys[$i]} = ($i == $#keys ? 'test' : {}); $hashref = $hashref->{$keys[$i]}; } print "Dumper: '".Dumper(\%hash)."'
\n";