Thread Probleme bei File - Handler - Änderung einer Zeile (13 answers)
Opened by YAPD at 2016-02-21 23:19

Raubtier
 2016-02-22 09:15
#183967 #183967
User since
2012-05-04
1054 Artikel
BenutzerIn

user image
2016-02-21T22:19:37 YAPD
Um Grunde ist die Sub - Routine so in Ordnung.


Nein. Zumindest würdest du nicht durchs Code-Review kommen, wenn ich es machen würde.

Was fällt auf?
1. Vor dem Aufruf: können die get()-Funktionen beim Zusammenbau des Hashes wirklich immer nur 1 Element zurückgeben? Oder auch mal 0 bei Fehlern oder mehrere? Ich weiß es nicht, finde es aber daher immer etwas unglücklich, das so direkt in eine Hash-Zuweisung zu schreiben.
2. Aufruf bitte ohne das &.
3. Dateihandles. Bitte benutze keine globalen Handles, sondern normale, mit my deklarierte Variablen! Dann entfällt auch dein local *CF.
4. Hast du wirklich Dateien, die mit \r\n oder \n oder \r getrennt sind? Oder anders: sind wirklich Dateien dabei, die als Zeilentrenner nur \r haben? Wenn nein, könntest du die gesamte Datei einfach zeilenweise verarbeiten.
5. Dieser Code hier:
Quote
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
				my @Zeilen;

open( DATEI , "$datei" );
while ( <DATEI> ) { push @Zeilen, $_; }
close(DATEI);

foreach ( @Zeilen ) { $_ =~ s/$quellwort/$zielwort/; }

open(DATEI, ">$datei" );
foreach ( @Zeilen ) { print DATEI "$_"; }
close(DATEI);

Guck dir mal Perldoc:Tie::File an. (Und verbessere die Einrückung)
6. Das waren bislang alles nur technische Details, ich habe mir die Logik noch gar nicht angeguckt, finde es allgemein aber verwunderlich, dass innerhalb einer Loop mehrmals die Datei test.txt komplett gelesen und neu geschrieben wird.

View full thread Probleme bei File - Handler - Änderung einer Zeile