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