Perl Problem mit hashes

Alexander Reelsen ar at rhwd.net
Sun Apr 2 19:24:24 CEST 2000


Moin

Ich habe hier gerade ein problem mit hashes unter Perl. Sind ja schoene
dinger eigentlich, wenn man sie auch ohne probleme auslesen koennte.

Folgendes Szenario (kann komisch aussehen, bin 'strict' fan):
my (%data);

$data{'foo'} = 12;
$data{'bar'}{'baz'} = 23;
$data{'bar'}{'quux'} = 34;

Wenn ich nun ein:
while (($key,$value) = each %data) {
print "$key=$value\n";
}

mache, funktioniert das ja auch 1a, ausser dass ich dann bei $data{'bar'}
den wer "HASH(0xirgendwas)" sehe. Da dachte ich mir, gehe ich rekursiv
durch den hash. Das klappt aber noch nicht so. Versucht habe ich es
folgender massen, was aber daran scheitert dass man an subs keine hashes
uebergeben wie mir scheint.

    sub recurse_hash {

        my ($key, $value);

        while (($key,$value) = $_[0]) {
        if (ref($key) eq "HASH") {
            recurse_hash($data{$key});
            } else {
            print "$key=$value\n";
            }
        }
    }
    recurse_hash(%data);

Es wird also kontrolliert, ob $data{'bar'} nen HASH ist, wenn ja, das
ganze prozedere von vorne. Leider geht $_[0] aber nicht, und %_[0] ist
syntaktisch nicht moeglich. Muss ich da irgendwie mit referenzen arbeiten?
Wenn ja wie?


MfG/Regards, Alexander, der sich immer noch kein Cookbook gekauft hat :)

--
Alexander Reelsen     http://joker.rhwd.de
ar at rhwd.net           GnuPG: pub 1024D/F0D7313C  sub 2048g/6AA2EDDB
                      7D44 F4E3 1993 FDDF 552E  7C88 EE9C CBD1 F0D7 313C

-
Hinweise zur Benutzung dieser (und anderer Mailing-Listen) bitte beachten:
--> http://lug-owl.de/mailinglist_hints.html <--



More information about the Linux mailing list