Tôi đã động lồng nhau băm-refs như thế này:
my $hash = { 'a' => { 'b' => { 'c' => 'value' } } };
Tôi muốn thiết giá trị của c thành 'something' bằng cách cho phép người dùng nhập "abc something".
Bây giờ nhận giá trị có thể được thực hiện như thế này:
my $keys = 'a.b.c';
my $v='something';
my $h = $hash;
foreach my $k(split /\./, $keys) {
$h = $h->{$k};
}
print $h; # "value"
Nhưng làm thế nào sẽ Tôi thiết giá trị của chính c
-$v
để
print Dumper $hash;
sẽ phản ánh sự thay đổi ? $h
không phải là ref ở cuối vòng lặp foreach, do đó thay đổi sẽ không phản ánh thay đổi trong $hash
. Bất kỳ gợi ý làm thế nào để giải quyết các nút thắt trong đầu của tôi?
Hãy thử sử dụng các mô-đun của CPAN 'data :: Dump' 'dd' chức năng thay vì tiêu chuẩn' dữ liệu :: của Dumper' 'Dumper'. Mô-đun CPAN làm cho việc đọc dễ dàng hơn nhiều. – tchrist