Thread Zweistufige Hash-Referenz zuweisen
(36 answers)
Opened by mikdoe at 2009-06-03 20:50
Guten Abend!
Hab mir schon einen Wolf hier im Forum und im Netz gesucht und bisher keine schlaue Antwort gefunden. Workaround: Ich bekomme aus dem Modul SOAP::Lite eine Referenz geliefert. Diese kann ich in der ersten Ebene auch hiermit super auslesen: Code (perl): (dl
)
1 2 3 4 5 6 my @keys = keys (%$hash_ref); foreach my $k (sort {lc $keys[$a] cmp lc $keys[$b]} 0..$#keys) { print "$keys[$k] => "; print (defined $hash_ref -> {$keys[$k]} ? $hash_ref -> {$keys[$k]} : 'NOT DEFINED'); print "\n"; } Allerdings gibt es einige Keys, die wiederum Unterebenen haben. Mit Data::Dumper konnte ich ermitteln, dass es insgesamt max. 2 Stufen sind, wovon ich die erste ja - wie gesagt - bereits super auslesen kann. Nun habe ich mittels Code (perl): (dl
)
1 2 3 if (ref($hash_ref -> {$keys[$k]}) eq 'ARRAY') { my @keys2 = keys (%$keys[$k]); } versucht, mir die Keys der zweiten Ebene zu holen, um wiederum in einer inneren Schleife die Untermengen anzuzeigen. Resultat (erwarten Profis bereits) für die Zuweisung: Global symbol "$keys" requires explicit package name und syntax error at blabla.pl line 28, near "$keys[" Was mache ich denn da falsch? Zwar würde mir reichen, bis zur zweiten Tiefe auszulesen, für mein Verständnis hätte ich aber dann doch gern noch eine Möglichkeit gefunden, auf ganz einfache Art und Weise die ganze Referenz dem Hash %result zuzuordnen, um diese Referenzen ganz los zu werden und mit einem konservativen Hash á la "foreach keys print value" arbeiten zu können. Hat Data::Dumper nicht eine Möglichkeit dafür? Hab im Manual nichts dazu gefunden. Vielen Dank für any suggests mod-edit pq: perl-tags hinzugefügt Last edited: 2009-06-03 21:17:11 +0200 (CEST) |