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