Thread Zweistufige Hash-Referenz zuweisen (36 answers)
Opened by mikdoe at 2009-06-03 20:50

mikdoe
 2009-06-04 13:57
#122332 #122332
User since
2007-08-13
98 Artikel
BenutzerIn
[default_avatar]
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

View full thread Zweistufige Hash-Referenz zuweisen