稍微修改代码,问题就解决了。
use strict;
use warnings;
use feature 'say';
my %hash1 = (
'ERROR MESSAGE1' => ['A1','B1'],
'ERROR MESSAGE2' => ['A2','B2'],
'ERROR MESSAGE3' => ['A3','B3'],
'ERROR MESSAGE4' => ['A4','B4']
);
my %hash2 = (
'ERROR MESSAGE1' => ['C4','D1'],
'ERROR MESSAGE2' => ['C5','D2'],
'ERROR MESSAGE3' => ['C6','D3'],
'ERROR MESSAGE4' => ['C7','D4']
);
my %errordata;
for my $key (keys %hash1) {
$errordata{$key} = [ $hash2{$key}, $hash1{$key} ];
}
use Data::Dumper;
print Dumper \%errordata;
say '--- Loop while --------------';
while (my($g,$w) = each %errordata)
{
say
"ERROR MESSAGE: $g
FULL PATH: $errordata{$g}[1][$_]
LINE: $errordata{$g}[0][$_]
" for 0..1;
}
say '--- Loop for ----------------';
for my $k ( sort keys %errordata ) {
say
"ERROR MESSAGE: $k
FULL PATH: $errordata{$k}[1][$_]
LINE: $errordata{$k}[0][$_]
" for 0..1;
}
输出
$VAR1 = {
'ERROR MESSAGE4' => [
[
'C7',
'D4'
],
[
'A4',
'B4'
]
],
'ERROR MESSAGE3' => [
[
'C6',
'D3'
],
[
'A3',
'B3'
]
],
'ERROR MESSAGE1' => [
[
'C4',
'D1'
],
[
'A1',
'B1'
]
],
'ERROR MESSAGE2' => [
[
'C5',
'D2'
],
[
'A2',
'B2'
]
]
};
--- Loop while --------------
ERROR MESSAGE: ERROR MESSAGE4
FULL PATH: A4
LINE: C7
ERROR MESSAGE: ERROR MESSAGE4
FULL PATH: B4
LINE: D4
ERROR MESSAGE: ERROR MESSAGE3
FULL PATH: A3
LINE: C6
ERROR MESSAGE: ERROR MESSAGE3
FULL PATH: B3
LINE: D3
ERROR MESSAGE: ERROR MESSAGE1
FULL PATH: A1
LINE: C4
ERROR MESSAGE: ERROR MESSAGE1
FULL PATH: B1
LINE: D1
ERROR MESSAGE: ERROR MESSAGE2
FULL PATH: A2
LINE: C5
ERROR MESSAGE: ERROR MESSAGE2
FULL PATH: B2
LINE: D2
--- Loop for ----------------
ERROR MESSAGE: ERROR MESSAGE1
FULL PATH: A1
LINE: C4
ERROR MESSAGE: ERROR MESSAGE1
FULL PATH: B1
LINE: D1
ERROR MESSAGE: ERROR MESSAGE2
FULL PATH: A2
LINE: C5
ERROR MESSAGE: ERROR MESSAGE2
FULL PATH: B2
LINE: D2
ERROR MESSAGE: ERROR MESSAGE3
FULL PATH: A3
LINE: C6
ERROR MESSAGE: ERROR MESSAGE3
FULL PATH: B3
LINE: D3
ERROR MESSAGE: ERROR MESSAGE4
FULL PATH: A4
LINE: C7
ERROR MESSAGE: ERROR MESSAGE4
FULL PATH: B4
LINE: D4