Inge: Hash-Verarbeitung

Hi,
zu einem Hash kann ich Werte hinzufügen durch
$Daten{Name} = "Meyer";
$Daten{Vorname} = "Oliver";
....
$Daten{Ort} = "Köln";

Gibt es eine kürzere Variante, um eine ganze Reihe von Elementen hinzuzufügen?

  1. Hi!

    Gibt es eine kürzere Variante, um eine ganze Reihe von Elementen hinzuzufügen?

    Ja, in SelfHTML steht auch was zu Perl-Hashes.

    Schöner Gruß,
    rob

    1. Gibt es eine kürzere Variante, um eine ganze Reihe von Elementen hinzuzufügen?
      Ja, in SelfHTML steht auch was zu Perl-Hashes.

      Das habe ich gelesen, und daraus ergab sich die Frage!

      1. Hi,

        Gibt es eine kürzere Variante, um eine ganze Reihe von Elementen hinzuzufügen?
        Ja, in SelfHTML steht auch was zu Perl-Hashes.

        Das habe ich gelesen, und daraus ergab sich die Frage!

        Dann solltest du es vielleicht nochmal aufmerksam gleich das erste Beispiel durchlesen.
        Da steht:
        my %bessereDaten = (Name => "Jana", Alter => 23, Ort => "Berlin");

        In dieser Zeile wird ein Hash initialisiert.

        mfG,
        steckl

        1. Hallo,
          nicht ich sollte besser durchlesen sondern Du meine Fragestellung.
          Es war nicht die Frage der Initialisierung sondern der Erweiterung um mehrere Elemente!

          1. nicht ich sollte besser durchlesen sondern Du meine Fragestellung.
            Es war nicht die Frage der Initialisierung sondern der Erweiterung um mehrere Elemente!

            Ups, tut mir leid.

            mfG,
            steckl

  2. Hallo.

    Gibt es eine kürzere Variante, um eine ganze Reihe von Elementen hinzuzufügen?

    Du kannst den Hash überschreiben und ihm sowohl die alten, als auch die neuen Werte zuweisen:

    # Initialisierung  
    my %hash = ( a => 1,  
                 b => 2,  
                );  
      
    # Hinzufügen neuer Werte  
    %hash = ( %hash,  
              c => 3,  
              d => 4,  
             );
    

    Üblich ist das m. E. allerdings nicht, eher merkwürdig.

    Schöne Grüße.

  3. Gibt es eine kürzere Variante, um eine ganze Reihe von Elementen hinzuzufügen?

    Hash-Slices hielte ich hier für den elegantesten Weg:

    my @keys = qw(foo bar baz);  
    my @values = qw(boo bum bla);  
    my %hash;  
    @hash{@keys} = @values;
    

    Im strict-Pragma wird eine Warnung geworfen, wenn die Anzahl der Elemente in @keys und @values nicht übereinstimmt, da das Ergebnis des Slices unvorhersehbar ist.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.