![](/img/trans.png)
[英]how to compare a hash key of a one file with a hash value of another in perl
[英]compare one hash key with other hash's value
如何將一個哈希的鍵與另一個哈希的值進行比較? 這是我的哈希的輸出。 我只需要返回布爾輸出。
(我的代碼現在有點混亂,因此請原諒我不在此處發布。我只需要邏輯,我將嘗試進一步進行整合。)
$VAR1 = {
'5555' => [
'13570'
]
};
$VAR1 = {
'13570' => [
'[04/Jun/2013:15:06:13'
]
};
謝謝。
$VAR1
分配了兩次。 我想這是一個錯字。 您實際上是否要檢查散列是否包含給定鍵,盡管該鍵與另一個散列中的值相同( eq
)?
您可以使用exists
,例如, if (exists $hash{$key}) {...}
。 有關defined
和exists
的區別,請參閱defined
和exists
的區別是什么?
順便說一句,當您使用{ }
聲明匿名哈希,並使用[ ]
聲明匿名數組時,在獲取實際內容之前需要取消引用; 否則,您僅使用引用(如c語言中的指針)。
令您失望的是,您的哈希值不是實際值 ,而是指向包含實際數據的單元素數組的數組引用(如Data :: Dumper輸出中的[ ... ]
所示) 。 因此,您需要取消引用它們並從結果數組中獲取第一個元素:
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
my %hash1 = ('5555' => [ '13570' ]);
my %hash2 = ('13570' => [ '[04/Jun/2013:15:06:13' ]);
for (keys %hash1) {
my $first_key = $_;
my $second_key = $hash1{$first_key}[0];
say "$first_key -> $second_key -> $hash2{$second_key}[0]";
}
輸出:
5555 -> 13570 -> [04/Jun/2013:15:06:13
編輯:備用代碼來檢查所有的值在每個%hash1
條目和為每個在顯示所有的對應值%hash2
:
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
my %hash1 = ('5555' => [ '13570', '8675309' ]);
my %hash2 = (
'13570' => [ '[04/Jun/2013:15:06:13' ],
8675309 => [ 'Jenny', 'I got your number' ],
);
for (keys %hash1) {
my $first_key = $_;
for my $second_key ( @{$hash1{$first_key}} ) {
if (exists $hash2{$second_key}) {
say "$first_key -> $second_key ->";
say "\t$_" for @{$hash2{$second_key}};
}
}
}
輸出:
5555 -> 13570 ->
[04/Jun/2013:15:06:13
5555 -> 8675309 ->
Jenny
I got your number
我得到這是如何將未加密的值與加密的值進行比較。 我可能是錯的。
如果是這樣的話...
if HASH_VALUE(nonEncrypted) is equal to encryptedValue
do something
else
do something else
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.