Thread Beobachtung bei XML::Simple (4 answers)
Opened by skirnir at 2008-02-29 12:39

skirnir
 2008-02-29 12:39
#106494 #106494
User since
2006-05-09
29 Artikel
BenutzerIn
[default_avatar]
Hallo,

Wenn ich folgendes Programm ausführe:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use strict;
use warnings;

use XML::Simple;
use Data::Dumper;

my $hashref = { parent => {
                                                one => { name => "aname", other => "something"},
                                                two => { name => "anothername", stuff => "bladder"}
                                            }
                         };

print Dumper($hashref). "\n";
print XMLout($hashref). "\n";

Bekomme ich folgende Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$VAR1 = {
'parent' => {
'one' => {
'other' => 'something',
'name' => 'aname'
},
'two' => {
'name' => 'anothername',
'stuff' => 'bladder'
}
}
};

<opt>
<parent name="aname" other="something" />
<parent name="anothername" stuff="bladder" />
</opt>

Also geht die Information in den Keys "one" und "two" verloren, weil die Ebene darunter 'name' als Key hat (sieht jedenfalls für mich nach etwas rumprobieren so aus)

Wenn ich XML::Simple im strict-mode verwende, also
Zeile 5:
Code (perl): (dl )
use XML::Simple qw(:strict);

und Zeile 15:
Code (perl): (dl )
print XMLout($hashref, KeyAttr => []);

bekomme ich:
Code: (dl )
1
2
3
4
5
6
<opt>
<parent>
<one name="aname" other="something" />
<two name="anothername" stuff="bladder" />
</parent>
</opt>

(Der Dump bleibt natürlich gleich)

Das überrascht mich jetzt etwas. Ich hätte eher erwartet, eine warning wegen der hashref zu bekommen, aber dass ich jetzt plötzlich stillschweigend das bekomme, was ich gerne hätte, finde ich strange und in der Doku habe ich dieses Verhalten nicht dokumentiert gefunden.
Könnt ihr mir sagen, ob und wenn ja, warum das Verhalten so Sinn macht?

Edit: perl-code korrigiert

View full thread Beobachtung bei XML::Simple