Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datei mit Perl modifizieren



detonation997
21-12-2002, 10:57
Hallo!

Wenn ich eine ASCII-Textdatei mit Perl "durchsuchen und ersetzen" will (in der Bash der Job von "sed"), dann würde ich die Datei zum Schreiben und Lesen öffnen:
============================
#!/usr/bin/perl -w

use strict;

open(FILE, "+</etc/passwd");
my $position = 0;

while (<FILE>)
{
s/eins/zwei drei/g;
seek(FILE,$position,0);
print FILE $_;
$position = tell(FILE);
}
============================
Das Problem dabei ist aber, dass Teile der Datei überschrieben werden (weil ja der ersetzende String länger als der zu suchende ist).

Ich möchte nicht die ganze Datei in ein Array (sprich den Arbeitsspeicher) einlesen, und die Datei von Grund auf neuschreiben => das würde ja bei größeren Dateien nicht mehr hinhauen, weil der Arbeitsspeicher begrenzt ist...

Wisst ihr eine Lösung?

fork
21-12-2002, 14:51
Die Quelldatei zum lesen öffnen, eine temporäre Datei schreiben, und diese am Ende auf die Quelldatei kopieren.