0

あるハッシュのキーを他のハッシュの値とどのように比較しますか? これが私のハッシュの出力です。ブール出力を返すだけで済みます。

(私のコードは今ちょっと混乱しているので、ここに投稿しないことを許してください。ロジックが必要なだけです。それを組み込むためにさらに努力します。)

    $VAR1 = {
      '5555' => [
                    '13570'
                  ]
    };
    $VAR1 = {
      '13570' => [
                   '[04/Jun/2013:15:06:13'
                 ]
            };

ありがとう。

4

3 に答える 3

1

$VAR12回割り当てられます。これはタイプミスだと思います。このキーはeq別のハッシュの値と同じ ( ) ですが、ハッシュに特定のキーが含まれているかどうかを実際に確認したいですか?

existsを使用できますif (exists $hash{$key}) {...}definedとの違いについては、「 exists と defined の違いは何ですか?」existsを参照してください。

{ }ところで、匿名ハッシュと匿名配列を で宣言すると[ ]、実際のコンテンツを取得する前に逆参照が必要になります。それ以外の場合は、参照を使用するだけです (C 言語のポインターのように)。

于 2013-06-12T02:54:36.043 に答える
0

ここであなたを悩ませているのは、ハッシュ値が実際の[ ... ]ではなく、実際のデータを含む単一要素の配列を指す配列参照 (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
于 2013-06-12T07:55:26.410 に答える
-3

暗号化されていない値と暗号化された値を比較する方法としてこれを取得しています。私は間違っているかもしれません。

このような場合は...

if HASH_VALUE(nonEncrypted) is equal to encryptedValue
    do something
else
    do something else
于 2013-06-11T21:07:38.007 に答える