gpt4 book ai didi

perl - 不能修改子程序内的匿名哈希引用

转载 作者:行者123 更新时间:2023-12-04 04:36:57 27 4
gpt4 key购买 nike

我正在尝试通过两个子例程就地修改匿名哈希数组:

my $hashes = [{
foo => 'bar',
foobar => 'baz',
qux => { 'foo' => 'baz' },
}];

sub data_parser
{
my $data = shift;

while ((my $key, my $value) = each($data)) {
if (ref($value) ne '') {
__SUB__->($value);
} else {
$value = value_parser($value) if ($key eq 'foo');
print "data_parser() ${key}'s new value is: ${value}\n" if ($key eq 'foo');
}
}
}

sub value_parser { return('newvalue'); }

foreach my $hash (@{$hashes}) {
data_parser($hash);
print "foo is " . $hash->{'foo'} . "\n";
print "foo is " . $hash->{'qux'}{'foo'} . "\n";
}

输出是:
data_parser() foo's new value is: newvalue
data_parser() foo's new value is: newvalue
foo is bar
foo is baz

我希望 value_parser() 通过哈希引用修改数据结构,因此就地。
任何见解将不胜感激,谢谢!

最佳答案

您从不分配 $value对任何事情。添加

$data->{$key} = $value;

关于perl - 不能修改子程序内的匿名哈希引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com