Thread Modul um jedes Element eines Hashes zu bearbeiten
(7 answers)
Opened by roooot at 2009-04-23 22:11
So könnte man es machen:
(Ungetestet) 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 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $struct={a=>[{a=>[1,2,3,4],b=>{a=>1,b=>2,d=>3}},{a=>1,b=>2},[1,2,3],[1,2]],b=>{a=>{a=>[1,2,3,4],b=>0},b=>[1,2,3,4,5,6,7]},c=>10}; sub catch { my $in=shift; my $ref=shift; my $type=ref($ref); if($type eq 'HASH') { for my $key (keys(%$ref)) { catch("$in HASH($key)->",$ref->{$key}); } } elsif($type eq 'ARRAY') { for my $i (0..$#$ref) { catch("$in ARRAY($i)->",$ref->[$i]); } } else { print "$in VALUE=$ref\n"; } } print Dumper($struct); catch("",$struct); "ref()" gibt den Typ einer Variable zurück (ARRAY, HASH, CODE, etc.) Der Code klappert rekursiv alle Pfade, die möglich sind, durch. |