print Perl哈希键值(键是一个数组)

时间:2016-09-01 17:53:16

标签: perl hash key

您好我将Perl哈希定义为:

foreach my $pair (@correlatedPttns)
{    
   # slice the data out
    my @tmp = ();
    for (my $x = 0; $x<$cnt; $x++)
    {    
        push @tmp,[ @{ $data[$x] } [ 0, @$pair[0], @$pair[1] ] ]; # epochtime, Pi, Pj
    }    

    #build hash
    $pairToDataHash{Dumper(@$pair)} = \@tmp;
}

如果输出哈希值,打印Dumper(\%pairToDataHash),它将如下所示:

$VAR1 = {
          '$VAR1 = 30; 
$VAR2 = 31; 
' => [


                                       [     
                                        'TIME',
                                        'P30',
                                        'P31' 
                                      ],    
                                      [     
                                        '1398038853',
                                        '0',  
                                        '0'   
                                      ],    

如何获取单个键,因为键是通过Dumper形成的数组。我需要访问$ VAR1 = 30的值。我如何获得密钥元素?

for ( keys %pairToDataHash)
{
      #get the key element value. 
}

2 个答案:

答案 0 :(得分:1)

Data :: Dumper是一个调试工具。在这里使用是不合适的。

看起来你有一对整数,所以只需使用

$pairToDataHash{ join ':', @$pair }

for ( keys %pairToDataHash ) {
   my @pair = split /:/;
   ...
}

如果您有浮点数,请使用

$pairToDataHash{ pack 'd*', @$pair }

for ( keys %pairToDataHash ) {
   my @pair = unpack 'd*';
   ...
}

答案 1 :(得分:-1)

没有评论您的方案哈希键是否可以改进...

Data::Dumper的输出适合传递给Perl的eval函数。

for ( keys %pairToDataHash)
{
    my ($VAR1,$VAR2);     # required for 'use strict'
    eval $_;
    ... now $VAR1, $VAR2 are loaded
}