我正在尝试确定与另一个哈希不相同的嵌套哈希部分。例如:
my $p = {a => {b => 'b', c => 'c'}, d => 'd'};
my $q = {a => {c => 'c', f => 'f'}, e => 'e'};
我希望函数hash_unique
能够返回$q
中不在$p
中的my $r = hash_unique($q, $p);
部分:
$r = {a => {f => 'f'}, e => 'e'}
它应该给{{1}}。注意:只应检查散列的键,忽略值的差异。
答案 0 :(得分:0)
我使用Hash::Diff找到了一个很好的解决方案:
use Data::Dump qw(dump);
use Hash::Diff qw(left_diff);
my $p={a=>{b=>'b',c=>'c'},d=>'d'};
my $q={a=>{c=>'c',f=>'f'},e=>'e'};
my $r=left_diff($q,$p);
dump($r);
给了我正确的解决方案:
{ a => { f => "f" }, e => "e" }