Преобразование строки «abc» в $hash->{a}->{b}->{c} в Perl

У меня есть динамические вложенные хеш-ссылки, подобные этому:

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

Я хочу установить значение c равным «что-то», позволяя пользователю вводить «a.b.c что-то».

Теперь получениезначения можно сделать так:

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

Но как мне установитьзначение ключа cв $v чтобы

print Dumper $hash;

отражало изменение? $hне является ссылкой в ​​конце цикла foreach, поэтому его изменение не отразится на изменении в $hash. Любые подсказки, как решить узлы в моей голове?

7
задан agranig 9 June 2012 в 22:23
поделиться