하나의 배열 (@ array1)에있는 모든 요소를 반복하면서 같은 요소가 다른 배열 (@ array2)에서 발견되면 루프를 만들고 싶습니다. 값은 첫 번째 배열에 추가되고 세 번째 배열에서 삭제 된 동일한 인덱스를 가진 세 번째 배열 (@ array3)의 값입니다. 이 방법으로 시도했지만 if 문을 사용하는 줄은 unitialized 값으로 실행되며 영원히 반복됩니다.루프에서 배열의 요소 삭제
foreach my $elem1 (@array1){
my $i = 0;
while ($i < scalar @array2){
if($array2[$i]==$elem1){
push (@array1, $array3[$i]);
delete $array2[$i];
}
else{
$i++;
}
}
}
'delete' 함수는 주로 배열이 아닌 해시와 함께 사용하기위한 것입니다. 당신은'splice'를 원합니다. http://perldoc.perl.org/functions/delete.html을 참조하십시오. 일반적으로이 문제를 해결할 수있는 더 좋은 방법이 있습니다. – FMc
아래의 의견은 사용자가 원하는 알고리즘을 실수로 설명했다는 것을 암시합니다. 원하는 작업을 수행하기 전후에 어레이의 모양을 보여주십시오. 원하는 것을 명확하게 보여주십시오. – pilcrow