Mar*_*n08 3 algorithm perl hash merge
我在Perl中写了一个sub来合并相同结构的2个哈希; 合并($ a,$ b)
$a = {
k1 => { sk1 => 'v1' },
k2 => { sk3 => 'v3', sk4 => 'v4' }
};
$b = {
k1 => { sk2 => 'v2'},
k3 => { sk5 => 'v5'}
};
Run Code Online (Sandbox Code Playgroud)
会导致
$c = {
k1 => { sk1 => 'v1', sk2 => 'v2' },
k2 => { sk3 => 'v3', sk4 => 'v4' }
k3 => { sk5 => 'v5'}
};
Run Code Online (Sandbox Code Playgroud)
下面是我的合并代码,它不起作用.我该如何纠正?谢谢.
sub merge {
my ($old,$new) = @_;
foreach my $k (keys($old)) {
if (exists $new->{$k}) {
if (ref($old->{$k}) eq 'HASH') {
merge($old->{$k},$new->{$k});
} else {
$new->{$k} = $old->{$k};
}
} else {
$new->{$k} = $old->{$k};
}
}
return $new;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |