2014-07-10 99 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" }