Thread array wird falsch/nicht belegt....
(12 answers)
Opened by Gast at 2008-01-30 17:55 Struppi+2008-01-31 11:50:23-- diese Schreibweise kann zu schwierig zu findenden Fehlern führen, weil da das globale $_ verändert wird (im Gegensatz zu foreach (<TEXTDAT>), was einen Alias verwendet). Deshalb da immer einen "Laufvariable" verwenden: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 while( my $line = <TEXTDAT> ) { chomp $line; my @daten = split( /!/, $line ); if($merker != $daten[1]) { $merker = $daten[1]; $hits++; push @array, $merker; } } Besser noch lokale filehandles verwenden, z.B. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/perl use strict; use warnings; # besser als -w, weil es nur die aktuelle Datei betrifft my $file = "text.txt"; open( my $TEXTDAT, '<', $file ) or die "Error: couldn't open file '$file': $!"; <$TEXTDAT> for 0..4; # ok, weil for bei $_ einen alias auf den Wert enthält, der nach ende der Schleife "wiederhergestellt" wird. my $merker = ''; my @array; while( my $line = <$TEXTDAT> ) { chomp $line; my @daten = split( /!/, $line ); if($merker != $daten[1]) { $merker = $daten[1]; $hits++; push @array, $merker; } } close $TEXTDAT; perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |