簡體   English   中英

比較一個哈希鍵和其他哈希值

[英]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}) {...} 有關definedexists的區別,請參閱definedexists 的區別是什么?

順便說一句,當您使用{ }聲明匿名哈希,並使用[ ]聲明匿名數組時,在獲取實際內容之前需要取消引用; 否則,您僅使用引用(如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM