2016-09-01 6 views
-2

(キーが配列である)キー値をハッシュ:印刷のPerlこんにちは、私のように定義されたPerlのハッシュ持つ

:出力した場合、ハッシュ、印刷Dumperの(\%pairToDataHash)

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; 
} 

を、それがどのように見えるでしょう

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


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

キーがDumper経由でアレイとして形成されたため、個々のキーを取得する方法を教えてください。値$ VAR1 = 30にアクセスする必要があります。どのようにキーの要素を取得するのですか?あなたのスキームのハッシュキーが大幅に改善することができるかどうかについてコメントすることなく

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

'@ correlatedPttns'、' @ data'、および '$ cnt'とは何ですか?代わりに 'use strict'と' use warnings 'all''を持っていますか? – Borodin

+0

あなたの件名に 'print Perlハッシュキー値(キーは配列です)'と書かれていますが、Perlハッシュキーは単純なC文字列でなければなりません。 – Borodin

答えて

-1

... Data::Dumperから

出力は、Perlのeval関数に渡されるのに適しています。

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

Data :: Dumperはデバッグツールです。ここで使用するのは適切ではありません。

あなたがあなたの代わりに浮動小数点数をしている場合は、これだけ

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

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

を使用し、整数のペアを持っているように見えます

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

使用
for (keys %pairToDataHash) { 
    my @pair = unpack 'd*'; 
    ... 
} 
関連する問題