Konwertuj ciąg „a.b.c” na $ hash -> {a} -> {b} -> {c} w Perlu

Mam dynamiczne zagnieżdżone znaki skrótu, takie jak ten:

my $hash = { 'a' => { 'b' => { 'c' => 'value' } } };

Chcę ustawić wartość c na „coś”, pozwalając użytkownikowi na wprowadzenie „a.b.c coś”.

Terazdostawanie wartość można zrobić w ten sposób:

my $keys = 'a.b.c'; 
my $v='something';
my $h = $hash;
foreach my $k(split /\./, $keys) {
  $h = $h->{$k};
}
print $h; # "value"

Ale jak jazestaw wartość kluczac do$v po to aby

print Dumper $hash;

odzwierciedlałoby zmianę?$h nie jest ref na końcu pętli foreach, więc zmienia się, że nie odzwierciedla zmiany$hash. Jakieś wskazówki, jak rozwiązać węzły w mojej głowie?

questionAnswers(3)

yourAnswerToTheQuestion