我可以写下这两个:
$var = tied $$var; # History=HASH(0x192a540)
$var->{ desc }; # object description info
用一个表达式:
${tied $$var}->{ desc };
我收到错误:
Not a SCALAR reference at ...
答案 0 :(得分:5)
语法SOMETHING->{key}
尝试在引用SOMETHING
中执行哈希查找。在这里,您的SOMETHING
为${...}
,即标量解除引用。
相反,你想要
(...)->{key}
${...}{key}
。 ->
解引用运算符只是两个下标之间的可选。即$foo{bar}[42]
和$foo{bar}->[42]
是等效的,并从%foo
哈希值中访问值。但是$foo->{bar}[42]
完全不同:它访问$foo
哈希引用中的值。
语法%{SOMETHING}{key}
不正确,因为它将SOMETHING
取消引用为哈希,然后访问条目。但是,用于访问哈希%SOMETHING
中的条目的语法是$SOMETHING{key}
,而不是%SOMETHING{key}
。散列的sigil %
变为标量符号$
,因为您从散列中获得标量条目。这已知令人困惑,并已在Perl 6中修复。