我有这个多维哈希%HASH:
'BBBL' => {
', 'VALUE' => 'CASH
'DATES' => '20163112'
},
'AAA' => {
', 'VALUE' => '70
'DATES' => '20170602'
'CCC' => {
', 'VALUE' => '70
'DATES' => '20170602'
并且对于AAA BBB和CCC中的每一个,我想将DATES推送到数组中。
foreach my $symbol (keys %HASH){
my @dates = values %HASH;
}
但是这给了我:
'VALUE' => 'CASH
'DATES' => '20163112'
},
{
', 'VALUE' => '90
'DATES' => '20170802'
},
{
', 'VALUE' => '90
'DATES' => '20171702'
}
];
我不知道如何获得日期。
答案 0 :(得分:4)
你可以这样做:
my @dates;
for my $symbol (keys %HASH){
push @dates, $HASH{$symbol}{DATES};
}
这可以简化为:
my @dates;
for my $subhash (values %HASH){
push @dates, $subhash->{DATES};
}
反过来可以改写为:
my @dates = map $_->{DATES}, values %HASH;
旁注:似乎您的VALUE
字段最后包含回车符(CR,\r
)。如果您使用Data :: Dumper生成输出,则可能需要设置$Data::Dumper::Useqq = 1;
以使转储更具可读性。