Perl中多维哈希的交集

时间:2014-07-10 22:47:38

标签: perl hash

我正在尝试确定与另一个哈希不相同的嵌套哈希部分。例如:

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}}。注意:只应检查散列的键,忽略值的差异。

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" }