Thread Dereferenz.(durch Hash aus XML::Simple iterieren) (7 answers)
Opened by tschloss at 2008-04-21 10:38

tschloss
 2008-04-21 10:38
#108612 #108612
User since
2008-04-21
30 Artikel
BenutzerIn
[default_avatar]
Hallo hier im Forum!
Ich wurstle mich bei Perl so durch, aber hin und wieder verliere ich mich in den Strukturen.

Ich habe aus XML::Simple eine Datenstruktur $ref-> hier mit Data::Dumper ausgegegeben.
Code: (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
$VAR1 = {
'photos' => {
'page' => '1',
'photo' => {
'24257747591' => {
'owner' => '258306934@N06',
'isfriend' => '1',
'ispublic' => '0',
'secret' => '6dxxxxc553',
'farm' => '3',
'server' => '2293',
'title' => 'DSCF0049',
'isfamily' => '0'
},
'24265886194' => {
'owner' => '258306934@N06',
'isfriend' => '1',
'ispublic' => '0',
'secret' => 'a53xxxx964',
'farm' => '3',
'server' => '2102',
'title' => 'DSCF0040',
'isfamily' => '0'
},
'24257750595' => {
'owner' => '258306934@N06',
'isfriend' => '1',
'ispublic' => '0',
'secret' => '6exxxxx0ab',
'farm' => '3',
'server' => '2246',
'title' => 'DSCF0035',
'isfamily' => '0'
}
},
'total' => '112',
'pages' => '12',
'perpage' => '10'
},
'stat' => 'ok'
};


Ich will jetzt durch diesen Hash bestehend aus 3 Elementen
'24257747591' => HASH
'24265886194' => HASH
'24257750595' => HASH
iterieren.

Diese Untertruktur sollte eigentlich "$ref->{photos}->{photo}" heißen. Dieser Ausdruck scheint eine Referenz zu sein und nicht vom Typ Hash.
Jedenfalls kommt bei Schleifenversuchen wie
Code: (dl )
1
2
3
while (($key,$value) = each( $ref->{photos}->{photo} )) {
print $key . "\n";
}
oder
Code: (dl )
for $id ( keys $ref->{photos}->{photo} ) {...}

die Fehlermeldung, dass each oder keys einen Hash erwartet.

Wie dereferenziere ich denn hier? Wie notiere ich die Schleife?
Ich bin auch gerne bereit, die Unterstruktur vorher in eine Hashvariable zu kopieren (Das ganze ist weder performance- noch speicherkritisch), aber auch das habe ich nicht hinbekommen.

Danke im voraus!!
Thomas

View full thread Dereferenz.(durch Hash aus XML::Simple iterieren)