Jonas: Array sortieren / Elemente aus Array finden

Hallo

Ich weiss, es hatte schon viele Topics zu dem Thema - aber mein Problem wurde bisher noch nicht gepostet.

Zum Beschreib, was ich habe und wil:

Ich habe ein txt file, welches folgendermasen strukturiert ist:

Jede Zeile besteht aus diesen Elementen:
id|name|datum|dir|wertung

(id geht von 1-x, also natürliche, aufsteigende Zahlen)

Nun lese ich die Datei in einen Array @file ein. (den Code dazu poste ich mal nicht, sollte klar sein.)

Das Problem ist nun, dass ich bei der übergabe der id (sagen wir mal der Wert liegt in der variable $id) das Element mit der entsprechenden id finden will.
Ich habe das bisher so gelöst:

foreach(@file) {
@tmp = split(/|/,$_);
if ($tmp[0] eq $id) {@found = @tmp;}
}

dann hatte ich jeweils die ensprechende Linie von dem File in @found.

Nun würde mich aber interessieren, ob es nicht eine bessere Lösung dafür gibt. (Besonders werden ja alle Elemente abgearbeitet, auch wenn die entsprechende id gefunden wurde.)

Zusätzlich möchte ich diesen Array @file sowohl nach absteigender id als auch nach dem namen sortieren können. Mit sort(@file) wird das ganze aber logischwerweise nur nach der id sortiert.

Ich würde mich über Tipps und Anregungen freuen.

Schöne Grüsse

Jonas

  1. Hallo Jonas.

    Zusätzlich möchte ich diesen Array @file sowohl nach absteigender id als auch nach dem namen sortieren können. Mit sort(@file) wird das ganze aber logischwerweise nur nach der id sortiert.

    Such mal nch dem Begriff "Schwartzsche Transformation", das dürfte genau das sein, was du suchst.

    Freundschaft!
    Siechfred

    --
    Wissen bedeutet zu wissen, wo es steht.
    1. Such mal nch dem Begriff "Schwartzsche Transformation", das dürfte genau das sein, was du suchst.

      Freundschaft!
      Siechfred

      Perfekt! Genau das, was ich suche! Dank dir vielmals.

      Wenn nun noch jemand eine alternative Lösung für das erste Problem hat, bin ich restlos glücklich ;D

      Gruss

      1. Hallo Jonas.

        Wenn nun noch jemand eine alternative Lösung für das erste Problem hat, bin ich restlos glücklich ;D

        Hm, eine while-Schleife könnte Abhilfe schaffen:
        http://de.selfhtml.org/cgiperl/sprache/schleifen.htm#while

        Freundschaft!
        Siechfred

        --
        Wissen bedeutet zu wissen, wo es steht.
        1. Hallo Jonas.

          Hm, eine while-Schleife könnte Abhilfe schaffen:
          http://de.selfhtml.org/cgiperl/sprache/schleifen.htm#while

          Weitere Ideen:
          http://de.selfhtml.org/cgiperl/sprache/sprungbefehle.htm#last
          http://de.selfhtml.org/cgiperl/funktionen/kontrolle.htm#return

          Freundschaft!
          Siechfred

          --
          Wissen bedeutet zu wissen, wo es steht.
          1. Hi again

            Naja, das mit while ist nich optimal, da ich dann immer noch für den Array eine Zählvariabler mitnehmen muss. Das hab ich nicht so gerne!

            Das mit dem last ist aber DIE Lösung! Wusste gar nicht, dass es einen solchen Ausdruck in Perl gibt.

            10000 Dank

            Gruss

            Jonas