Helge Rex: Datei lesen, evt. Daten eintragen und schreiben

Hallo zusammen,

ich muß eine Datei einlesen, prüfen, ob darin etwas bestimmtes steht, evt. die Daten ändern und nach Änderungen die Datei wieder speichern.

Dabei habe ich folgendes Problem:
Laut http://selfhtml.koenigreich/cgiperl/funktionen/einausgabe.htm#open kann ich mit "+>$DATEI" die Datei zum Lesen und schreiben öffnen. Wenn ich dies so mache, wird die Datei jedoch komplett überschrieben. Das möchte ich so nicht.
Also dachte ich, daß ich mit "+>>$Datei" das erreiche. Perl liefert mir keinen Fehler, die Daten werden aber grundsätzlich eingetragen. Das möchte ich so auch nicht.

Hier der entsprechende Code-Abschnitt:

open(NAMES, "+>>$DATEI") or die "$!";
my @ZEILEN = <NAMES>;
my $FOUND = 0;

foreach my $ZEILE (@ZEILEN) {
    if (substr($ZEILE, 0, length($DATEN)) != 0) {
        $FOUND = $FOUND + 1;
    }
}

if ($FOUND == 0) {
    push(@ZEILEN, "$DATEN\n");
    print NAMES @ZEILEN;

print "<p>Fertig.</p>\n";
} else {
    print "<p>$DATEN existiert bereits in der Liste. Der Eintrag wurde <strong>nicht</strong> hinzugefügt</p>\n";
}
close(NAMES);

Was mache ich falsch?
Wie mache ich es richtig?

Ich bedanke mich im Voraus
Helge Rex

  1. Hi,

    Also dachte ich, daß ich mit "+>>$Datei" das erreiche. Perl liefert mir keinen Fehler, die Daten werden aber grundsätzlich eingetragen. Das möchte ich so auch nicht.

    Was meinst du mit "grundsätzlich eingetragen"?

    Grüße Andres Freund

    1. Also dachte ich, daß ich mit "+>>$Datei" das erreiche. Perl liefert mir keinen Fehler, die Daten werden aber grundsätzlich eingetragen. Das möchte ich so auch nicht.
      Was meinst du mit "grundsätzlich eingetragen"?

      Die neuen Daten werden in die Datei geschrieben, obwohl sie schon in der Datei stehen. Ich habe hinterher also doppelte Einträge.

      Gruß
      Helge