my $h = {k1 => { k2 => { k3 => 'wert' }}}; @keys = qw(k1 k2 k3); $hxx = $h; $hxx = $hxx->{$_} for @keys[0..$#keys-1]; $hxx->{$keys[-1]} = 'neuerWert'; use Data::Dumper; print Dumper $h;