1

私は次のハッシュリファレンスを持っています:-

my $hashref = {'a'=>(1,2,3,4),
               'b'=>(5,6,7,8)};

次に、次を使用してキー(つまり、「a」と「b」)を出力します:-

foreach (keys %$hashref){
   print "\n".$_."\n";
}

これにより、次の出力が出力されます。

4

a

7

2

5

Data::Dumper を使用してデータ構造ハッシュリファレンスを印刷しようとすると、次の出力が得られます:-

$VAR1 = {
          '4' => 'b',
          'a' => 1,
          '7' => 8,
          '2' => 3,
          '5' => 6
       };

私の質問は:-

1) 正しいキー、つまり 'a' と 'b' を出力する方法。2) データ構造が上記の出力のように見え、似ていないのはなぜですか?

$VAR1 = {
           'a' => (1,2,3,4),
           'b' => (5,6,7,8)
        };
4

1 に答える 1

7

ハッシュを間違って定義しています。これは次のように解釈されます。

'a'=>(1,2,3,4),
'b'=>(5,6,7,8)

単純に 10 個の要素のリストとして。(単純なリストを使用してハッシュを宣言することもできることに注意して=>ください。演算子はオプションです。)代わりに、角括弧を使用して、値を arrayref リテラルにします。

'a'=>[1,2,3,4],
'b'=>[5,6,7,8]

どの Data::Dumper を呼び出す必要がありますか:

$VAR1 = {
   'a' => [1,2,3,4],
   'b' => [5,6,7,8]
};
于 2012-09-28T17:16:45.467 に答える