Вы не можете заменить его, но вы можете сделать новый ключ легко, а затем delete()
старый один:
$data->{key3}{key4}{key6} = $data->{key3}{key4}{key5};
delete $data->{key3}{key4}{key5};
Конечно, вы могли бы сделать довольно простую подпрограмму, чтобы сделать это. Однако мой первый подход был неправильным, и вам нужно будет сделать более сложный подход, который проходит в структуре данных для модификации, и элемент, который нужно изменить, и учитывая, что вам нужны элементы на несколько уровней, это может быть сложно. Хотя, если вы не возражаете, немного беспорядок:
sub hash_replace (\%$$) {
$_[0]->{$_[2]} = delete $_[0]->{$_[1]}; # thanks mobrule!
}
Затем вызовите его:
hash_replace %{$data->{key3}{key4}}, "key5", "key6";
или прохладный способ (Как лучше сказать, что мы преобразуя «key5» в «key6» ?):
hash_replace %{$data->{key3}{key4}}, key5 => "key6";
(Протестировано и работает)
О, правильно! Я забыл об этом. Выключить, чтобы изменить мой 'hash_replace()' –
Спасибо за это. Я даже не знал, что это можно сделать так – John