1

私のプロジェクトで使用されている perl スクリプトで非常に奇妙なコードを見ました。それは次のようなものです。

my $arrayRef = [
    A => {AA => 11, AAA => 111},
    B => {BB => 11, BBB => 111},
];

IMO、ハッシュテーブルから匿名配列を構築しようとします。配列要素を印刷しようとすると、次のようになります。

foreach (@$arrayRef )
{
    print;
    print "\n";
}

A
HASH(0x1e60220)
B
HASH(0x1e71bd0)

つまり、ハッシュ テーブル内のすべての要素 (キーと値) を無名配列内の個別の要素として扱います。しかし、なぜハッシュを配列に保存したいのか、私は本当に混乱しています。私にとって唯一の利点は、ハッシュ テーブルが非常に大きい場合にメモリを節約できることです。これはよく使われる perl トリックですか?

ありがとう!

4

2 に答える 2

4

ハッシュ テーブルから無名配列を構築しようとします。

いいえ、4 要素のリストから無名配列を作成します。

A => {AA => 11, AAA => 111}, B => {BB => 11, BBB => 111}

とまったく同じことです

'A', {AA => 11, AAA => 111}, 'B', {BB => 11, BBB => 111}

の使用は=>ある種の関係を暗示しているので、使用できたと思います

{ A => {AA => 11, AAA => 111}, B => {BB => 11, BBB => 111} }

また

[ [ A => {AA => 11, AAA => 111} ], [ B => {BB => 11, BBB => 111} ] ]

または何百万もの他のデータ構造のいずれかですが、あなたが与えたものから、あるものが別のものよりも選ばれた理由を知る方法があります.

于 2013-06-21T06:44:17.890 に答える