Chrisman: Einzelne Array-Elemente entfernen

Hallo,

ich habe folgendes Problem:

1. Eine Datei enthält in jeder ihrer Zeilen einige Daten und einen Zeitpunkt, an dem diese Daten abgespeichert wurden.
2. Ich überprüfe den Zeitpunkt darauf wielange dieser schon zurück liegt, wenn er mehr als z.B. 60 Sekunden zurückliegt, dann soll die einzelne Zeile gelöscht werden.
3. Danach sollen die Daten abzgl. der gelöschten Zeilen wieder in die Datei geschrieben werden.

Wie stelle ich das an?
Ich habe mir gedacht, ich schreibe jede Zeile in ein @array, aber ich weiß nicht wie ich dann einzelne Elemente aus dem Array lösche (außer erstes und letztes, das weiß ich, aber das nützt mir ja nix). Aber vielleicht gibt es ja auch noch eine bessere Möglichkeit?

Chrisman

  1. hi ho

    Ich habe mir gedacht, ich schreibe jede Zeile in ein @array, aber ich weiß nicht wie ich dann einzelne Elemente aus dem Array lösche (außer erstes und letztes, das weiß ich, aber das nützt mir ja nix). Aber vielleicht gibt es ja auch noch eine bessere Möglichkeit?

    perldoc -f splice

    .-)

    cua

    n.d.p.

  2. Hallo,

    Die Funktion, die Du suchst heißt 'splice'. In der Dokumentation 'perlfunc' findest Du sie übrigens unter "Functions for real @ARRAYs" oder mit
      perldoc -f splice

    Aber warum überprüfst Du nicht gleich beim einlesen? Dann kommen die unerwünschten Zeilen gar nicht ins Array. Prüfen mußt Du sowieso und dann wird das Array auch nicht größer als unbendingt notwendig:

    open(FILE,'wasauchimer') or die 'so ein mist, hat nicht geklappt';
    while(<FILE>)
      {
      push @array,$_ if(hier die bedingung);
      }
    close FILE;
    open(FILE,'>wasauchimer') or die 'was soll das? schreiben geht auch nicht';
    print FILE @array;
    close FILE;

    Grüße
      Klaus

    1. Hallo Klaus,

      vielen Dank für Deinen Code! Du hast mir wirklich SEHR geholfen!! :-)

      Thx
      Chrisman