尝试在代码下运行时出现以下错误。
arg 1到键的类型必须是“@array”附近的哈希(非私有数组)
代码的想法是比较两个数组数据。此方法适用于我的主服务器,但不能在需要实现的服务器上运行。
不知道该去哪儿。
foreach (sort keys @array){
unless (exists $group_list[$_]){
print "$_: not found\n";
next;
}
if (equivalent($array[$_],$group_list[$_])){
print "$_: values are equal\n"
}else{
print "$_: values are not equal\n";
}
}
如果需要更多信息,请与我们联系。
答案 0 :(得分:3)
keys @array
仅适用于较新的perls,因此通常应避免使用。我们可以直接写下索引的范围,而无需额外的语法:除非设置了$[
,索引以0
开头,并且是最后一个索引的$#array
的连续范围。然后:
for (sort 0 .. $#array)
请注意,此范围已按数字排序,sort
将按字母顺序对其进行排序。如果不需要该行为,请删除sort
:
for (0 .. $#array)
这是迭代所有索引的正常习惯用法。
另请注意(除非你做了非常不寻常的事情),exists $array[$_]
可能是真的,所以这个测试不太可能有用(例如,如果你预先将数组扩展到特定大小,它可能是错误的: $#array = $size - 1
)。测试条目是否defined
更有可能是有用的。