这似乎是一件奇怪的事情,但是如何在散列本身“内部”时引用散列?这是我想要做的:
我有一个哈希的哈希,最后有一个子,例如:
my $h = { A => [...], B => [...], ..., EXPAND => sub { ... } };
Run Code Online (Sandbox Code Playgroud)
. 我正在寻找实施EXPAND以查看C该哈希中是否存在键,如果存在,则插入另一个键值对D。
所以我的问题是,如何将对此哈希的引用传递给 sub,而不使用哈希的变量名?我希望需要对一些散列执行此操作,并且我不想一直更改 sub 以引用它当前所在散列的名称。
你得到的是一些嵌套的数组引用,而不是散列。让我们假设你实际上是说你有这样的东西:
my $h = { A => {...}, B => {...}, ..., EXPAND() };
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您不能$h从它自己的定义中引用,因为$h在完全评估表达式之前不存在。
如果您满足于将其分成两行,那么您可以这样做:
my $h = { A=> {...}, B => {...} };
$h = { %$h, EXPAND( $h ) };
Run Code Online (Sandbox Code Playgroud)