tschloss
21.04.08, 06:45
Hi, ich bin verzweifelt!
(ja, ich habe auch bei mrunix gepostet, aber scheinbar sind dort vorwiegend nur noch LatTEX-Schreiber unterwegs ;) und schauen sich den Post nicht mal an)
Ich habe aus XML::Simple eine Datenstruktur $ref-> hier mit Data::Dumper ausgegegeben.
$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
while (($key,$value) = each( $ref->{photos}->{photo} )) {
print $key . "\n";
} oder
for $id ( keys $ref->{photos}->{photo} ) {...}
die Fehlermeldung, dass each oder keys einen Hash erwartet.
Wie dereferenziere ich denn hier?
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
(ja, ich habe auch bei mrunix gepostet, aber scheinbar sind dort vorwiegend nur noch LatTEX-Schreiber unterwegs ;) und schauen sich den Post nicht mal an)
Ich habe aus XML::Simple eine Datenstruktur $ref-> hier mit Data::Dumper ausgegegeben.
$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
while (($key,$value) = each( $ref->{photos}->{photo} )) {
print $key . "\n";
} oder
for $id ( keys $ref->{photos}->{photo} ) {...}
die Fehlermeldung, dass each oder keys einen Hash erwartet.
Wie dereferenziere ich denn hier?
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