【发布时间】:2018-04-16 10:48:39
【问题描述】:
我可以通过切片获得值:
($x, $y, $z) = $hash->{ key }->@[0,1,2]
为什么我不能写?
($x, $y, $z) = $hash->{ key }->@*
对于第二个表达式,如果 key 未在哈希中定义,我会收到错误:
不能在 ... 处使用未定义的值作为 ARRAY 引用
【问题讨论】:
标签: perl autovivification
我可以通过切片获得值:
($x, $y, $z) = $hash->{ key }->@[0,1,2]
为什么我不能写?
($x, $y, $z) = $hash->{ key }->@*
对于第二个表达式,如果 key 未在哈希中定义,我会收到错误:
不能在 ... 处使用未定义的值作为 ARRAY 引用
【问题讨论】:
标签: perl autovivification
切片为每个指定的索引获取左值(可写标量);列表上下文数组取消引用不会产生任何左值。而一般规则是自动存活仅适用于左值。
例如->@* 在这种情况下会自动激活:
push $hash->{ key }->@*, 1;
【讨论】: