我试图发起一个有7个NAs作为值的哈希.
这就是我所拥有的:
values %hash = ("NA") x 7;
print join("\t",values %hash),"\n";
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
Can't modify values in scalar assignment at line 22, near "7;"
Run Code Online (Sandbox Code Playgroud)
显然,虽然我可以将数组分配给散列键,但我无法使用散列值来执行此操作
keys %hash = ["a","b","c","d","e","f","g"];
Run Code Online (Sandbox Code Playgroud)
为什么它适用于键而不是哈希赋值的值?
来自perldoc -f keys:
用作左值,"keys"允许您增加为给定散列分配的散列桶的数量.如果您知道哈希值会变大,这可以获得一定的效率.
即这种方法对于设置密钥没有用,只为一定数量的条目分配空间.当使用引用作为数字时,结果可能会非常大,会占用大部分内存 - 不完全推荐.
要使用某些值初始化哈希,您必须指定所需的键.但您可以使用切片作为左值:
my %hash;
@hash{1..7} = ("NA") x 7;
Run Code Online (Sandbox Code Playgroud)
注意:左值是可以在赋值左侧使用的值.