将多维数组的值推送到perl中的数组

时间:2017-09-23 20:30:06

标签: arrays perl hash

我有这个多维哈希%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'
          }
        ];

我不知道如何获得日期。

1 个答案:

答案 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;以使转储更具可读性。