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?