Beat: Tie::file und splice

Beitrag lesen

Es ist nicht empfehlenswert, den Array zu splicen, über den ich gerade iteriere.

Diesen Hinweis habe ich schon des öfteren gelesen, aber noch keine für mich nachvollziehbare Begründung dafür. Könntest Du da mal was genaues liefern?

Hier ist ein kleiner Testcase

  
#!C:/Programme/Perl/bin/perl.exe -w  
#  
use strict;  
  
BEGIN {  
 use CGI::Carp qw(carpout);  
 open(LOG, ">>error.txt")  or  die "Unable to append to error.txt: $!\n";  
 carpout(*LOG);  
}  
  
my @ar = (1..10);  
my $cnt = 0;  
foreach(@ar){  
  # zeige den Zustand vor dem Splicen.  
  print "vorher", $_,"-",$ar[$cnt], ' nachher';  
  splice(@ar,$cnt,1);  
  # zeige den Zustand nach dem Splicen.  
  print $_,"-",$ar[$cnt], "\n";  
  $cnt++;  
}  
print scalar(@ar), "\n";  
# in diesem testcase sind immer noch 5 Elemente im array.  
sleep(10);  
  
exit;  

Wie interpretierst du das Ergebnis?

mfg Beat

--
Woran ich arbeite:
X-Torah
><o(((°>       ><o(((°>
   <°)))o><                      ><o(((°>o