2014-07-10 65 views
-1

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

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'}。注意:只应检查哈希键,忽略差值。

+0

问题是什么,其实?哪里有问题? – Palec

回答

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