我对 Perl 很陌生,需要快速完成一项任务。任何帮助表示赞赏!
我有两个数组散列如下:
Hash 1
-------
w: ['A','B','C']
e: ['P','Q','R']
Hash 2
-------
w:['A','B','C']
e:['P','Q','O']
r:['S','T']
语境:
我想找到相同键的值的差异(例如,对于相同的键'e',哈希 1 没有来自哈希 2 的值'O'。
找出键的不同。(例如,哈希 1 中不存在“r”。
我将一些代码放在一起,但它会从两个哈希中检查完整行的确切值。例如,如果我在哈希 1 中有 'A'、'B'、'C' 用于键 w 和 'B'、'C'、'A' 在哈希 2 中用于相同的键,如果标记差异。我想按价值比较价值-
以下代码比较了两个哈希 os 数组。因此,从上面的示例中,哈希 1 中的 A、B、C 不等于哈希 2 中的 B、A、C。但是我想检查单个项目的存在,比如 A,而不用担心顺序。
for ( keys %hash2 )
{
unless ( exists $hash1{$_} ) # Checks for mismatches in keys
{
print "$_: Key mismatch $_ received \n";
next;
}
if ( $hash2{$_} eq $hash1{$_} ) #Compares two lines exactly
{
print "$_: No mismatch \n";
}
else
{
print "$_: Value mismatch for key $_ \n"; #Difference in Value
}
}