2011-06-10 103 views
1

我遇到過這種情況。 在hash1中,第一列是關鍵字,其餘是datavalue,類似於hash2。Perl中兩個哈希的比較

所以我想要做的我想這兩個散列和

記錄是否在HASH2而不是HASH1比較那麼它的添加

記錄是否在HASH1而不是在hash2然後它的一滴。

我希望同時增加和下降list.I希望與HASH2反之亦然HASH1進行比較,並得到了增加,並且不使用CPAN模塊下降。

HASH1

739574562 Dexheimer  James   University Libraries   Coord Fast Cataloging jdexheim 
766631088 Rolls   Erlinda   University Libraries   Prof-Support-Waldo Lib rolls 
204707142 Reish   Joseph   University Libraries   Dean University 
127759797 PRIEST   DANIEL   University Libraries   Temporary Student-Non e 
133708988 BRODHEAD  MATTHEW   University Libraries   Temporary Student-Non e 
...... 
...... 
...... 

HASH2

381753669 BRAMAN     MELISSA    University Libraries   Temporary Non-Exempt  
127759797 PRIEST     DANIEL    University Libraries   Temporary Student-Non e 
133708988 BRODHEAD    MATTHEW    University Libraries   Temporary Student-Non e 
204707142 Reish     Joseph    University Libraries   Dean University 
...... 
...... 
...... 

在這種情況下,輸出應該是這樣的:

Adds : BRAMAN   MELISSA   University Libraries   Temporary Non-Exempt 

Drops : Dexheimer  James   University Libraries   Coord Fast Cataloging jdexheim 
     Rolls   Erlinda   University Libraries   Prof-Support-Waldo Lib rolls 

回答

2
for (keys(%h1)) { 
    if (!exists($h2{$_})) { 
     print("Dropped $_\n"); 
    } 
} 

for (keys(%h2)) { 
    if (!exists($h1{$_})) { 
     print("Added $_\n"); 
    } 
} 

扭捏輸出自己的喜好。

+0

有幾個錯誤,但如果用兩個大括號關閉,它會起作用。 [備查]。謝謝@ikegami。 – Sunny 2011-06-10 19:02:18

+0

固定。 (添加了缺失的parens。) – ikegami 2011-06-10 19:07:32