2010-11-23 3 views
2

In Perl:Schrumpfende Datei, die in Lesen/Schreiben geöffnet wird

Ich habe eine Datei in Lesen/Schreiben mit einer exklusiven Sperre geöffnet.

open($f, "+< $filename");
flock($f, LOCK_EX);

Wenn ich mehr Daten in die Datei schreiben, als es vorher gehalten wird, wird die Datei wachsen.
Wenn ich weniger Daten schreibe, sind meine neuen Inhalte am Anfang, aber die alten Inhalte sind immer noch am Ende der Datei vorhanden.

Das ist nicht überraschend, aber es ist nicht das, was ich will.

Gibt es eine einfache Möglichkeit, die Datei zu verkleinern, während sie beim Lesen/Schreiben geöffnet wird? Im Grunde möchte ich es sagen, die Datei an genau dieser Byte-Position zu beenden.

Ich weiß, ich kann es anders öffnen, und ich überlege, das zu tun, aber ein One-Line-Fix wäre nett.

+0

Ich würde vorschlagen, das Ergebnis der offenen, Herde, abgeschnitten, etc. – hpavc

+0

@hpavc testen oder verwenden Sie [Autodie] (http://search.cpan.org/perldoc?autodie). – cjm

+0

Ich teste die Ergebnisse aller dieser Befehle. Schneide sie einfach aus. – Brock

Antwort

1
+0

Sie beide gewinnen einen Cookie. Ich kann deine Antworten jedoch nicht für 9 Minuten akzeptieren (Warum ist das so?). – Brock

+0

Ich habe sogar nach dem Wort truncate gesucht und es irgendwie geschafft, das zu verpassen. Vielen Dank. – Brock

1

Ich weiß nicht wirklich über Perl, aber da ftruncate(2) würde die C-Funktion, vielleicht this hilft?

Verwandte Themen