Thread jede 2. Zeile in einer Text Datei löschen (19 answers)
Opened by Rambo at 2009-11-10 10:23

sid burn
 2009-11-10 14:58
#128074 #128074
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Das so zu machen ist meiner Meinung nach keine so tolle Idee, da rename auf vielen Systemen fehlschlägt, wenn $file und $temp nicht auf dem gleichen Dateisystem liegen

Deswegen erstelle ich die Temp Datei auch im aktuellen verzeichniss und nicht irgendwo anders.

Quote
und da ich ohne Lektüre des Quellcodes niemals annehmen würde, dass temporäre Dateien einfach ins aktuelle Arbeitsverzeichnis gekleistert werden.

Ohne Lektüre des Codes weißt du auch nicht das eine Temp Datei generiert wird.

---

Ansonsten entspricht das schon ziemlich genau dem Originalverhalten von "-i". Wobei "-i" noch kritischer ist. Mit der Option "-i" geht Perl hin öffnet die Datei, dann löscht es diese Datei, dann erzeugt es eine neue Datei mit gleichen Namen und liest aus der alten Datei aus und schreibt in der neuen.

Ich mache nahezu das gleiche, nur schreibe ich Temporär in eine Temp Datei. Wenn man so das programm mit "STRG+C" abbricht ist dammit die originaldatei nicht weg, solange die komplette Aktion nicht abgeschlossen ist.

Also in gewisser weise eine Atomare Aktion, entweder ganz oder gar nicht.

Quote
Ich würde dem Konstruktor von CPAN: File::Temp genau das Verzeichnis vorgeben, wo auch auch $file liegt, was beide Probleme behebt.

Hmm, okay das wollte ich eigentlich erreichen. Ich bin davon ausgegangen das man nur Dateinamen übergibt also keine Pfade, aber du hast recht, man kann natürlich auch Pfade angeben (gar nicht dran gedacht). Ja dann müsste/sollte man es noch anpassen das immer der Pfad genutzt wird wo die originaldatei liegt.

Erst beim schreiben und wo ich hier angekommen bin habe ich verstanden was du meintest daher lase ich den bisher geschriebenen text in diesem post stehen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread jede 2. Zeile in einer Text Datei löschen