SI: Array in Hash

Hallo zusammen,

ich hab einen Hash, der sieht so aus:
%h = ("Auto" => 1,"Haus" => 2,"Baum" => 3);

Nun will ich aber den Keys (z.B.Auto) mehrere Werte (z.B. zu den "1" noch "blau","cabrio"...) zuweisen.
Frage 1:
Wie kann ich das machen ?
Frage 2:
Wie greife ich dann auf die einzelnen Werte eines Keys zu ?
Ich benötige später nämlich dann alle Werte von Auto.

Danke für Hilfe.
cya
SI

  1. Hi,

    Nun will ich aber den Keys (z.B.Auto) mehrere Werte (z.B. zu den "1" noch "blau","cabrio"...) zuweisen.

    perldoc perldsc

    bzw. http://www.perldoc.com/perl5.8.0/pod/perldsc.html

    HTH

    wunderwarzenschwein

    --
    ss:} zu:$ ls:} fo:| de:] va:) ch:? sh:( n4:# rl:? br:> js:| ie:( fl:{ mo:)
    1. Danke,

      raff aber dennoch nicht, wie ich in zum Auto die Werte hinzufügen.
      Es wäre nett, wenn man nciht nur die manual postet sondern vielleicht es ein
      wenig erklärt und vielleicht ein Beispiel gibt.

      cya
      SI

      1. Danke,

        raff aber dennoch nicht, wie ich in zum Auto die Werte hinzufügen.
        Es wäre nett, wenn man nciht nur die manual postet sondern vielleicht es ein
        wenig erklärt und vielleicht ein Beispiel gibt.

        Was verstehst du denn nicht?
        Besser und vor allem ausführlicher kann man das nicht erklären, wie auf dieser Seite.

        Struppi.

        1. Hi,

          ok folgender Fall:

          ich hab ein Hash der sieht so aus:

          %hash = ("a","1","b","2","c","3");
          Nun hab ich ein Array das sieht so aus
          @arr = (a,3,4,5,b,2,3,5,c,6,9,8);

          Nun will ich dass das nachher so ausschaut:

          %hash =
          ( a => ["1","3","4","5"],
            b => ["2","3","5"],
            c => ["3","6","9","8"],
          };

          Aber ich bekomme das leider nicht hin.
          Kann mir da jemand weiterhelfen ?

          cya
          SI

          1. Hi,

            ok folgender Fall:

            ich hab ein Hash der sieht so aus:

            %hash = ("a","1","b","2","c","3");
            Nun hab ich ein Array das sieht so aus
            @arr = (a,3,4,5,b,2,3,5,c,6,9,8);

            Nun will ich dass das nachher so ausschaut:

            %hash =
            ( a => ["1","3","4","5"],
              b => ["2","3","5"],
              c => ["3","6","9","8"],
            };

            Aber ich bekomme das leider nicht hin.
            Kann mir da jemand weiterhelfen ?

            Irgendwie haben die beiden Nichts mit einander zu tun. du wirst wohl nicht umhin kommen mit Schleifen und Abfragen zu arbeiten, wenn deine Daten wirklich so aussehen.

            Struppi.

  2. Hallo Si,

    Du scheinst sowas zu suchen:

    $\ = "\n";

    my %hash;
    my @arr = [1, 2, 3];

    $hash{key1} = [1, 2, 3];
    $hash{key2} = [9,8,7];

    print $hash{key1};
    print @{ $hash{key1} }[0];

    push(@{$hash{key1}}, 4); # hinzufuegen des Wertes 4 zum Array von hash{key1}
    push(@{$hash{key1}}, 5);

    print @{ $hash{key1} }[1]; # ist 2
    print @{ $hash{key1} }[2]; # ist 3
    print @{ $hash{key1} }[3]; # ...
    print @{ $hash{key1} }[4];

    @{$hash{key1}}[0] = 4;
    print @{ $hash{key1} }[0];

    print @arr;
    print $hash{key2};
    print @{ $hash{key2} };

    viel Spaß damit
    Christoph