Thread Datei nach Zeichen durchsuchen
(15 answers)
Opened by Emeto at 2011-07-01 18:09
Hi,
leider kann ich nicht alles nachvollziehen, ich versuche mal ... die Fehlermeldung besagt, dass Du in Data1.txt Zeilen mit weniger als 2 Kommas hast, oder zwischen 2. und 3. Komma nichts steht. Die erste Schleife soll wahrscheinlich ungefähr dieses machen: Code (perl): (dl
)
1 2 3 4 5 6 while (<$in>) { my @tmp = split ','; # perldoc -f split my ($number, $name) = @tmp[0,2]; # perldata, Stichwort 'slice' next if ! defined $name; push @{$dump_packs{$name}}, $number ; # key: name, value: number array (!) } Jetzt hast Du eine Zuordnung Name => [Nummernliste]. Hier ist einiges fraglich oder verkehrt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 for my $key (sort keys %dump_packs) { # write the name and occurency in a new file #-> @pack = $key; # FALSCH: @pack enthält nur den Wert $key # besser: my @pack = @{$dump_packs{$key}}; #-> open(my $out, '>', "$resdir/ ${dumpfile}_dump.txt") or die $!; # ^ Leerzeichen im Pfad # File im Append-Modus (!) öffnen open(my $out, '>>', "$resdir/${dumpfile}_dump.txt") or die $!; #-> print $out join('', $key); # key and occurency ??? print $out $key . "," . scalar(@pack) . "\n"; # Name, Anzahl close $out; } Wenn Du wirklich alles in einer Datei brauchst, kannst Du natürlich das open- und close-Statement außerhalb der Schleife plazieren. Die Arrays @tmp und @pack, die ja immer neu gefüllt werden, solltest Du innerhalb der Schleifen mit my deklarieren. Probier mal bis dahin, für den zweiten Teil habe ich jetzt keine Zeit mehr, vielleicht abends. Gruß FIFO Last edited: 2011-07-05 15:02:36 +0200 (CEST) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|