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