Yves Sturzenegger: Filehandling

Hallo zusammen,

Kann ich aus einem Textfile bestimmte Zeile löschen?

Oder muss ich zuerst das ganze Textfile in einen Array lesen und dann alles zurückschreiben ausser diese bestimmte Zeile?

Beispiel:

File.txt

1. Zeile: Hund
2. Zeile: Hase
3. Zeile: Pferd

Nun möchte ich die Zeile mit dem "Hase" löschen, damit das File nochher so aussieht:

1. Zeile: Hund
2. Zeile: Pferd

Geht das?

Grüsse, Yves

  1. Tag,

    Kann ich aus einem Textfile bestimmte Zeile löschen?

    Ja, sicher :-)

    Oder muss ich zuerst das ganze Textfile in einen Array lesen und
    dann alles zurückschreiben ausser diese bestimmte Zeile?

    Nun, in einen Array wuerde ich das nicht lesen. Aber das Prinzip
    stimmt, ja.

    Beispiel:

    File.txt

    1. Zeile: Hund
    2. Zeile: Hase
    3. Zeile: Pferd

    Nun möchte ich die Zeile mit dem "Hase" löschen, damit das File
    nochher so aussieht:

    1. Zeile: Hund
    2. Zeile: Pferd

    Geht das?

    Klar:

    open DAT,'<datei1' or die $!;
    open NEW,'>datei2' or die $!;

    while(<DAT>) {
      if($_ ne 'Hase') {
        print NEW $_;
      }
    }

    close DAT;
    close NEW;

    rename 'datei2' => 'datei1';

    Das kann man noch geringfuegig optimieren, aber ich glaube nicht,
    dass sich das lohnt.

    Gruesse,
     CK

    1. rename 'datei2' => 'datei1';

      kleine anmerkung:

      wenn man die temporäre Datei (datei2) kopiert und danach löscht erhält man sich die alten Dateiattribute

      ciao
      Micha