2

これは奇妙なことのように思えるかもしれませんが、ハッシュ自体の「内部」でハッシュを参照するにはどうすればよいでしょうか? これが私がやろうとしていることです:

次のように、最後にサブを持つハッシュのハッシュがあります。

my $h = { A => [...], B => [...], ..., EXPAND => sub { ... } };

. EXPANDキーCがこのハッシュに存在するかどうかを確認するために実装を検討しています。存在する場合は、別のキーと値のペアを挿入しますD

だから私の質問は、ハッシュの変数名を使用せずに、このハッシュへの参照をサブに渡すにはどうすればよいですか? これをいくつかのハッシュに対して行う必要があると予想されますが、現在のハッシュの名前を参照するためにサブを変更し続ける必要はありません。

4

3 に答える 3

5

そこにあるのは、ハッシュではなく、ネストされた配列参照です。あなたが実際に次のようなものを持っていることを意味していたと仮定しましょう:

my $h = { A => {...}, B => {...}, ..., EXPAND() };

その場合、式が完全に評価されるまで存在しない$hため、独自の定義内から参照することはできません。$h

2行にすることに満足している場合は、次のようにすることができます。

my $h = { A=> {...}, B => {...} };
$h = { %$h, EXPAND( $h ) };
于 2013-06-24T18:23:03.713 に答える
0

構築中のハッシュは (潜在的に)EXPAND()実行後に発生します。私はおそらく次のようなものを使用します:

$h = EXPAND( { A=>... } )

WhereEXPAND(...)は、変更された hashref を返すか、オリジナルをそのままにしておく必要がある場合はクローンを返します。

于 2013-06-24T18:23:15.133 に答える