2 Stimmen

Wie kann man in Perl ein Array von Hashes erstellen und verwenden?

Wie man ein Perl-Programm, das ein Array enthält und dass Array zeigt ein Hash zu tun?

Bildlich sieht es so aus,

(M1)        (M2)        ...it goes on
 |--k1=>v1   |--K1=>v1
 |--k2=>v2   |--k2=>v2

Ich sollte auf dieses Array zugreifen M1 und dann den darin enthaltenen Hash. (und so weiter)...

4voto

Jonathan Leffler Punkte 694013

Das sollte genügen - obwohl mir nicht ganz klar ist, wie "M1" und "M2" in das Szenario passen sollen:

my(@array) = ( { k1 => "v1", k2 => "v2" }, { K1 => "V1", K2 => "V2" } );

print "$array[0]->{k1}\n";
print "$array[1]->{K2}\n";

Sie machen Ihr Leben interessanter, wenn Sie verschiedene Schlüsselsätze in den verschiedenen Elementen des Feldes verwenden (k1 und k2 gegenüber K1 und K2). Das ist keineswegs verboten, aber es macht die Verarbeitung schwieriger.

4voto

Eugene Yarmash Punkte 130008

Sie müssen Hash verwenden Referenzen :

my @array;    
push @array, { k1=>"v1", k2=>"v2" }, { k1=>"v1", k2=>"v2" };

Greifen Sie dann wie folgt auf die Hashes zu:

my $val = $array[0]{k1};

1voto

codaddict Punkte 426877

Etwa so:

%h1 = ('a'=>'abc','b'=>'bcd'); # hash 1
%h2 = ('A'=>'Abc','B'=>'Bcd'); # hash 2
@arr = (\%h1,\%h2); # array of hash references.
foreach $hash_ref (@arr) { # iterate through the array.
        foreach $key(keys %$hash_ref) { # iterate through the hash.
                print $key.' '.$$hash_ref{$key}."\n"; #print key => value
        }   
}

1voto

Dave Cross Punkte 65470

Um Ihnen das Angeln beizubringen, finden Sie hier einen Link zur Perl Datenstrukturen Kochbuch (perldsc) zum Aufbau komplexer Datenstrukturen in Perl.

0voto

Sie benötigen eine Hash-Referenz, die unten mit { } gekennzeichnet ist.

my @array = ({ k1 => "v1", k2 => 'v2' }, { K1 => 'V1', });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X