Horst: hash reverse

Hallo,

mit reverse kann ich einen hash so 'rumdrehen, dass keys und values vertauscht sind, soweit sogut, wenn das eineindeutig ist.

Nun, ich habe einen hash mit zwei keys:
hash{URL}{INDEX} = Ganze Zahl

komme mit einer ganzen Zahl {INDEX} und hätte gerne {URL} mit _einen_ Griff in die Klamottenkiste.

Wie kriege ich die Klamottenkiste?

Viele Grüße,
Hotte

  1. Nun, ich habe einen hash mit zwei keys:
    hash{URL}{INDEX} = Ganze Zahl
    komme mit einer ganzen Zahl {INDEX} und hätte gerne {URL} mit _einen_ Griff in die Klamottenkiste.

    Die Funktion grep sollte helfen:

    my @keys = grep { $hash{$_}{INDEX} == 42 } keys %hash;

    In @keys stehen dann alle URL, die einen INDEX-Wert von 42 haben.

    Siechfred

    --
    Wir vom Moderatorenteam haben keinerlei Humor, von dem wir wüssten.
    1. Nun, ich habe einen hash mit zwei keys:
      hash{URL}{INDEX} = Ganze Zahl
      komme mit einer ganzen Zahl {INDEX} und hätte gerne {URL} mit _einen_ Griff in die Klamottenkiste.

      Die Funktion grep sollte helfen:

      my @keys = grep { $hash{$_}{INDEX} == 42 } keys %hash;

      In @keys stehen dann alle URL, die einen INDEX-Wert von 42 haben.

      Vielen Dank!

      So in Etwa habe ich mir das vorgestellt. Basst.

      Viele Grüße,
      Horst Haselhuhn

      1. Hallo Horst,

        my @keys = grep { $hash{$_}{INDEX} == 42 } keys %hash;

        Bei solchen Ausdrücken werden natürlich alle Schlüssel durchlaufen. Das muss nicht schlimm sein, aber Du solltest Dir dessen bewusst sein.
        Wenn der Hash groß ist und Du das öfter machen willst, würde ich die umgekehrte Zuordnung in einem extra Hash speichern:
        my %foo = map {$hash{$_}{INDEX} => $_} keys %hash;

        Grüße

        Daniel

  2. Hallo,

    hash{URL}{INDEX} = Ganze Zahl

    Kann ir jemand erklären, wie so etwas aussieht?
    Bisher ist mir nur $hash{$key} begegnet.
    Danke

    1. hash{URL}{INDEX} = Ganze Zahl
      Kann ir jemand erklären, wie so etwas aussieht?

      Klar, lies die Doku zu Perl:
      http://perldoc.perl.org/perldsc.html#HASHES-OF-HASHES

      Siechfred

      --
      Wir vom Moderatorenteam haben keinerlei Humor, von dem wir wüssten.
      1. Hallo,

        Klar, lies die Doku zu Perl:
        http://perldoc.perl.org/perldsc.html#HASHES-OF-HASHES

        das habe ich befürchtet, in Selfhtml habe ich nämlich auch nichts gefunden. Obiges ist allerdings für mich höhere Mathematik (höheres Englisch).
        Danke trotzdem

        1. http://perldoc.perl.org/perldsc.html#HASHES-OF-HASHES
          das habe ich befürchtet, in Selfhtml habe ich nämlich auch nichts gefunden. Obiges ist allerdings für mich höhere Mathematik (höheres Englisch).

          Dann frage doch einfach, was Du nicht verstehst :)

          Siechfred

          --
          Wir vom Moderatorenteam haben keinerlei Humor, von dem wir wüssten.