以下代码是否始终在perl中运行?
for loop iterating over @array {
# do something
if ($condition) {
remove current element from @array
}
}
因为我在Java中知道这会产生一些异常,上面的代码现在对我有用,但我想确保它适用于perl中的所有情况。感谢
答案 0 :(得分:12)
嗯,据说doc:
如果LIST的任何部分是一个数组,如果你,foreach将会非常困惑 添加或删除循环体内的元素,例如使用拼接。 所以不要这样做。
each:
更好一些如果在迭代时添加或删除哈希的元素, 条目可能会被跳过或重复 - 所以不要这样做。例外:在 当前的实现,最常删除项目总是安全的 最近由each()返回,因此以下代码正常工作:
while (($key, $value) = each %hash) {
print $key, "\n";
delete $hash{$key}; # This is safe
}
但我想这里最好的选择就是使用grep:
@some_array = grep {
# do something with $_
some_condition($_);
} @some_array;