2016-12-10 9 views
0

値:のperl:印刷オブジェクトのプロパティ名と、次の

for my $z (@$y) {        
    # prints number of observables for a given activity summary 
    # print STDERR 'property count'.keys $z 
    print Dumper($z); 
} 

プリント:

$VAR1 = { 
      'activity' => 'walking', 
      'duration' => '591', 
      'calories' => 26, 
      'distance' => '435', 
      'steps' => 871, 
      'group' => 'walking' 
     }; 
$VAR1 = { 
      'steps' => 168, 
      'group' => 'walking', 
      'distance' => '100', 
      'activity' => 'walking', 
      'duration' => '200', 
      'calories' => 6 
     }; 

どのようにして、各プロパティを反復処理すると、その名前と値を印刷することができますか?私はperlを使っています。

+2

'perldoc perldsc' – toolic

+0

[Perlのハッシュでハッシュの配列を反復する]の可能な複製(http://stackoverflow.com/questions/12155607/iterate-through-array-of-hashes-in-a-ハッシュ・イン・パール) –

答えて

4

ここに1つの方法です:

for my $z (@$y) { 
    for my $k (keys %$z) { 
     print "$k: $z->{$k}\n"; 
    } 
} 

keysの詳細については、perldoc -f keysを参照してくださいします。ハッシュリファレンスについての一般的な情報はperldoc perldataです($zの値はオブジェクトではなくハッシュリファレンスです)。参照およびネストされたデータ構造についてはperldoc perlreftutを参照してください。

+0

ハッシュ検索の説明に感謝します –

0

あなたはこの試みることができる:

my $z = { 
     'activity' => 'walking', 
     'duration' => '591', 
     'calories' => 26, 
     'distance' => '435', 
     'steps' => 871, 
     'group' => 'walking' 
    }; 


while((my $key, my $value) = each (%{$z})){ 
    print "key : $key -> value : $value\n"; 
} 
+1

'each'の使用は、ハッシュ自体に格納されているイテレータの状態を使用するため、一般的にはお勧めできません。これは、奇妙なアクション・アット・ディスタンス・バグにつながります。 – melpomene

関連する問題