Lorenz: Array in Hash

Hallo,
ich habe ein Hash definiert, das arrays enthält (weiß gar nicht, ob das erlaubt ist).

my %h = (a1=>("1", "2"),
         a2=>("3", "4"));
Mit print %h; erhalte ich auch alle Werte angedruckt.
Wie kann ich aber gezielt adressieren, z.B.
das 2. Element, das zu a2 gehört?
Danke!

  1. Ahoi,

    ich habe ein Hash definiert, das arrays enthält (weiß gar nicht, ob das erlaubt ist).

    ist es nicht, mache dich in deiner Perl-Doku zum Thema Referenzen schlau.

    Gruß
    MrWurf

    1. Danke erst mal,
      jetz habe ich folgendes gemacht

      my @x1 = ("1", "2");
      my @x2 = ("3", "4");
      my %h = (a1=>@x1,
               a2=>@x2);

      Gibt es einen einfacheren Weg (ohne expl. Definition von @x1 und @x2)?
      Vermutet hätte ich in meinem jugendlichen Leichtsinn:
      my %h = (a1=>  \ ("1", "2"),
               a2=>  \ ("3", "4"));

      Was aber nicht funktioniert.

      1. Hey,

          
        #!/usr/bin/perl  
        use strict;  
        use warnings;  
        use Data::Dumper;  
          
        my %h =  
        (  
          a => [1, 2],  
          b => [3, 4]  
        );  
          
        print Dumper(\%h);  
        print $h{b}[1];  
        print $h{b}->[0];  
        
        

        Tschö

  2. Hallo,

    ich habe ein Hash definiert, das arrays enthält (weiß gar nicht, ob das erlaubt ist).

    Klar ist das erlaubt.

    my %h = (a1=>("1", "2"),
             a2=>("3", "4"));
    Mit print %h; erhalte ich auch alle Werte angedruckt.

    Machs mit anonymen hash:
    $h{a1} = [1,2];
    $h{a2} = [3,4];

    Wie kann ich aber gezielt adressieren, z.B.
    das 2. Element, das zu a2 gehört?

    print $h{a2}->[1], "\n"; # zeigt auf die 4 (zweites array-element)

    --Rita