Thread Zweistufige Hash-Referenz zuweisen
(36 answers)
Opened by mikdoe at 2009-06-03 20:50
So, jetzt hab ich das mal in eine (fast) allgemeine sub gepackt die sogar funktioniert.
Wie bekomme ich es denn jetzt hin, dass ich die Abfragen if ($key eq 'bic_candidates') und elsif ($key eq 'checks') allgemeingültig hinbekomme? Also wie frage ich, ob es eine zweifache Untermenge mit nummerierten Unterunterelementen (bic_candidates) oder eine einfache Untermenge mit mehreren Unterelementen (checks) gibt? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 sub make_hash { my $hash_ref = shift; my %return_hash; foreach my $key (keys %$hash_ref) { if ($key eq 'bic_candidates') { for my $i (0..$#{$hash_ref->{$key}}) { for my $inkey (sort keys %{$hash_ref->{$key}->[$i]}) { $return_hash{$key}{$i}{$inkey} = (defined $hash_ref->{$key}->[$i]->{$inkey} ? $hash_ref->{$key}->[$i]->{$inkey} : undef); } } } elsif ($key eq 'checks') { for my $i (@{$hash_ref->{$key}}) { $return_hash{$key}{$i} = defined; } } else { $return_hash{$key} = (defined $hash_ref -> {$key} ? $hash_ref -> {$key} : undef); } } return %return_hash; } Vielen Dank |