siziwi: Linie aus Textdatei löschen

Beitrag lesen

Habe dazu schon einiges gefunden, welches aber darauf beruht Zeile für Zeile in ein Array zu lesen und dann nur die gewünschten Zeile in die neue Textdatei speichert. Möchte dies aber nicht so lösen.

Kommt darauf an wie du bisher dein File geöffnet hast.

traditionell

open($fh, '<',$file ) or die("$!");
while(<$fh>){
  /^$/ and next;
  #...
  push @array,$_;
}

Habe es mit open geöffnet und die erste Zeile ausgelesen (Diese wird benötigt, kann aber nach erfolgreichem auslesen mit den anderen 6 ersten Zeile gelöscht werden).

oder mit Tie::File

tie( my @arr,'Tie::File', $file) or die ("$!");
  # mach was mit @ array
  # am Ende:
@arr = grep( /./) @arr; #kopiert nur nicht leere Zeilen
untie(@arr);

Aber so wie ich das beurteilen kann, beruhen beide Varianten darauf, dass die ganze Datei in ein Array geschrieben wird und dann die Veränderungen durchgeführt werden und erst ganz am Schluss die neue Datei geschrieben wird.
Gibt es aber auch eine Möglichkeit, wobei nicht die ganze Datei in ein Array übernommen wird? Denn die Dateien haben ziemlich viele Zeilen....

Viel Grüsse
siziwi