Martin M.: Array of Hash

Beitrag lesen

Hi zusammen,

ich hab jetzt meine Datenstruktur zusammmen, aber komme nicht weiter bei meinem Problem.

my @AoH = (  
        {  
            server     => "fred",  
            type   => "slow",  
            size   => "10",  
        },  
        {  
            server     => "fred",  
            type   => "middle",  
            size   => "50",  
        },  
        {  
            server     => "fred",  
            type   => "middle",  
            size   => "50",  
        },  
        {  
            server     => "hans",  
            type   => "fast",  
            size   => "80",  
        }  
  );  
  

Nun will ich alle sizes vom selben server mit derselbem typ zusammenzählen und in ein neues AoH überführen und weiss nicht, wie ich das am geschicktesten machen soll.

Ergebnis sollte sein:

my @AoH_neu = (  
        {  
            server     => "fred",  
            type   => "slow",  
            size   => "10",  
        },  
        {  
            server     => "fred",  
            type   => "middle",  
            size   => "100",  
        },  
        {  
            server     => "hans",  
            type   => "fast",  
            size   => "80",  
        }  
  );  
  

Ich hab schonmal ein bisschen rumprobiert.

for my $i ( 0 .. $#AoH ) {  
    unless ($seen{$AoH[$i]{server}}) {  
        $seen{$AoH[$i]{server}} = 1;  
        push(@uniq, $AoH[$i]{server});  
  
    }  
  
}

So hab ich zwar alle server von dem hash "unique" in einem array, aber kein plan, wie ich dann weitermachen sollte.
Danke für nen Tipp.

ciao,
Martin M.