【问题标题】:Perl - collect data from complex HashPerl - 从复杂的哈希中收集数据
【发布时间】:2015-07-27 12:26:48
【问题描述】:

最近我从老板那里得到了这个 so call hash info,要求我从中收集信息。我尝试了我所有的知识来完成它......不幸的是我没有从中得到任何东西。这是我想从中得到的......我需要UNIT标签下的键“3”,“9”和“10”的值,如下所示,请帮助我如何在perl中做到这一点?

$VAR1 = {
      'DETAIL' => {
                  'UNIT' => [
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              },
                              {
                                '1' => 'A',
                                '2' => 'B',
                                '3' => C,
                                '4' => D,
                                '5' => 'E',
                                '6' => 'F',
                                '7' => 'Y',
                                '8' => '',
                                '9' => 'G',
                                '10' => 'H',
                                '11' => '0'
                              }
                            ],
                  'z' => 'qq'
                },
      'HEADER' => {
                    'session_id' => '123456789',
                    'trans_id' => '143580181175634',
                    'timestamp' => '143580181175634',
                    'destination' => [
                                       '24658547',
                                       '34547846'
                                     ],
                    'origin' => 'SERVER1',
                    'type' => 'UnitInfo',
                    'buffer' => 'STANDARD',
                    'origin_name' => 'TESTServer1'
                  }
    };

【问题讨论】:

    标签: arrays perl hash


    【解决方案1】:
    my @values = map { @$_{3, 9, 10} } @{ $VAR1->{DETAIL}{UNIT} };
    

    【讨论】:

      【解决方案2】:

      这是一种简单的方法。 (请注意,您的数据中有未引用的字符。)

      my %output;
      foreach my $href ( @{ $VAR1->{'DETAIL'}{'UNIT'} } ) { 
        for ( 3, 9, 10 ) { 
          push @{ $output{ $_ } }, $href->{ $_ };
        }
      }
      

      输出:

      $VAR1 = {
            '3' => [
                     'C',
                     'C',
                     'C'
                   ],
            '10' => [
                      'H',
                      'H',
                      'H'
                    ],
            '9' => [
                     'G',
                     'G',
                     'G'
                   ]
          };
      

      【讨论】:

        猜你喜欢
        • 2011-09-29
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 2017-08-12
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        • 2012-03-30
        相关资源
        最近更新 更多