use strict; use warnings; use Data::Dumper; my @liste = qw(1 2 3); my $hashref = {}; deepvalue($hashref, @liste) = 123; print "Element ist: " . deepvalue($hashref, @liste) . "\n"; print Dumper $hashref; sub deepvalue : lvalue { my ($hashref, $key, @liste) = @_; $hashref->{$key} //= {}; @liste > 0 ? deepvalue($hashref->{$key}, @liste) : $hashref->{$key}; }