Thread Hash Struktur rekursiv durchsuchen (2 answers)
Opened by bianca at 2013-10-15 18:38

bianca
 2013-10-15 18:38
#171170 #171170
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Hi!
Ich möchte gern, dass mein Code eine unbekannte Hash Struktur rekursiv nach einem Begriff durchsucht.
Habe mir das ungefähr so vorgestellt:
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my %hash = (
    strang1 => {
        string  => 'string foo1',
        hash    => {
            'key foo2' => 'value foo3',
        },
        array   => [
            'foo4 im Array0',
            'foo5 im Array1',
        ],
    },
);

print rekursive_hash_suche(\%hash,'foo');

sub rekursive_hash_suche {
    my ($ref,$suche) = @_;
    my %algo;
    $algo{SCALAR} = sub {
        my ($ref,$suche) = @_;
        my $fund = 0;
        $fund = 1 if $ref =~ /foo/;
        $fund;
    };
    $algo{ARRAY} = sub {
        my ($ref,$suche) = @_;
        my $fund = 0;
        foreach my $k (@$ref) {
            my $fund = $algo{ref($ref->{$k})}($ref,$suche);
            last if $fund;
        }
        $fund;
    };
    $algo{HASH} = sub {
        my ($ref,$suche) = @_;
        my $fund = 0;
        foreach my $k (keys %$ref) {
print "ref:".ref($ref->{$k})." in ".$ref->{$k}."\n";
            my $fund = $algo{ref($ref->{$k})}($ref,$suche);
            last if $fund;
        }
        $fund;
    };
    return $algo{HASH}($ref,$suche);
}

Haufenweise Fehlermeldungen.
Bitte um Hilfe.
Was ich auch nicht genau weiß ist, wie ich das Ergebnis zurück gebe. Haben möchte ich als Ergebnis gern "strang1". Wenn es mehrere sind gern als Array mit den ganzen Keys.
10 print "Hallo"
20 goto 10

View full thread Hash Struktur rekursiv durchsuchen