Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays perl,从for循环中的数组中删除元素_Arrays_Perl_Iteration_Data Manipulation - Fatal编程技术网

Arrays perl,从for循环中的数组中删除元素

Arrays perl,从for循环中的数组中删除元素,arrays,perl,iteration,data-manipulation,Arrays,Perl,Iteration,Data Manipulation,下面的代码是否总是在perl中工作 for loop iterating over @array { # do something if ($condition) { remove current element from @array } } 因为我知道在Java中这会导致一些异常,所以上面的代码目前对我来说是有效的,但我想确保它在perl中适用于所有情况。谢谢嗯,报纸上说: 若列表的任何部分是数组,若您 在回路主体内添加或删除图元,例如使用接头。 所以不要那样做 使用

下面的代码是否总是在perl中工作

for loop iterating over @array {
  # do something
  if ($condition) {
     remove current element from @array
  }
}
因为我知道在Java中这会导致一些异常,所以上面的代码目前对我来说是有效的,但我想确保它在perl中适用于所有情况。谢谢

嗯,报纸上说:

若列表的任何部分是数组,若您 在回路主体内添加或删除图元,例如使用接头。 所以不要那样做

使用以下选项会更好:

如果在对哈希进行迭代时添加或删除哈希的元素, 条目可能被跳过或复制,所以不要这样做。例外情况:在 在当前的实现中,删除项目总是安全的 最近由each()返回,因此以下代码正常工作:

但我认为最好的选择是使用:


是的,文档说不要在foreach循环中删除/添加元素,但是C样式的for循环:for呢(my$i=0;$iAh,这是另一个故事。这应该是安全的,因为每次
for
检查退出条件时,您基本上只需计算数组的长度。请注意,
grep
示例的最后一行应该被更改,以删除
return
。内联子对象的最后一行被用作确定退出条件的条件。)不知道是否应该包括它。(
return
给出语法错误)
 while (($key, $value) = each %hash) {
    print $key, "\n";
    delete $hash{$key}; # This is safe
  }
@some_array = grep {
  # do something with $_
  some_condition($_);
} @some_array;