【问题标题】:print Perl hash key value (key is an array)打印 Perl 哈希键值(键是一个数组)
【发布时间】:2016-09-01 17:53:15
【问题描述】:

您好,我有一个 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. 
}

【问题讨论】:

  • @correlatedPttns@data$cnt 是什么?你有use strictuse warnings 'all' 吗?
  • 您的主题行是print Perl hash key value (key is an array),但 Perl 哈希键只能是简单的 C 字符串:它甚至不是 Perl 字符串。

标签: perl hash key


【解决方案1】:

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

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

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

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

如果您有浮点数,请使用

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 2012-08-10
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多