perl - 迭代遍历数组时允许的操作

mjp*_*mjp 3 arrays perl perl-hash

在迭代它时,数组允许的操作是什么?是否可以移动/取消移位,弹出/推送,删除元素而不会混淆迭代器?

从哈希中添加/删除键值对有什么不同吗?

谢谢您的帮助.

yst*_*sth 5

您可以分配给现有元素,但不应添加或删除它们.所以没有转移,不移位,弹出,推动或拼接. perlsyn:

如果LIST的任何部分是一个数组,如果在循环体内添加或删除元素,foreach将会非常困惑,例如使用splice.所以不要这样做.

如果要使用哈希迭代each,则还应避免添加或删除元素,除非明确允许您删除当前元素. 每个:

如果在迭代时添加或删除哈希的元素,则不会指定对迭代器的影响; 例如,条目可能被跳过或重复 - 所以不要这样做.例外:删除每个()最近返回的项目总是安全的,因此以下代码可以正常工作:

但正如它所说,可能发生的最坏情况是条目被跳过或重复; 另一方面,修改正在循环的阵列可能会导致段错误.