Update of /cvsroot/perl-xml/xml-simple/lib/XML
In directory usw-pr-cvs1:/tmp/cvs-serv18573/lib/XML
Modified Files:
Simple.pm
Log Message:
- fixed stringification of keyattr values (reported by Trond Michelsen)
Index: Simple.pm
===================================================================
RCS file: /cvsroot/perl-xml/xml-simple/lib/XML/Simple.pm,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Simple.pm 17 Oct 2002 07:29:45 -0000 1.2
+++ Simple.pm 17 Oct 2002 08:44:33 -0000 1.3
@@ -934,6 +934,15 @@
for($i = 0; $i < @$arrayref; $i++) {
if(ref($arrayref->[$i]) eq 'HASH' and exists($arrayref->[$i]->{$key})) {
$val = $arrayref->[$i]->{$key};
+ if(ref($val)) {
+ if($StrictMode) {
+ croak "<$name> element has non-scalar '$key' key attribute";
+ }
+ if($^W) {
+ carp "Warning: <$name> element has non-scalar '$key' key attribute";
+ }
+ return($arrayref);
+ }
$hashref->{$val} = { %{$arrayref->[$i]} };
$hashref->{$val}->{"-$key"} = $hashref->{$val}->{$key} if($flag eq '-');
delete $hashref->{$val}->{$key} unless($flag eq '+');
@@ -956,6 +965,7 @@
foreach $key (@{$self->{opt}->{keyattr}}) {
if(defined($arrayref->[$i]->{$key})) {
$val = $arrayref->[$i]->{$key};
+ return($arrayref) if(ref($val));
$hashref->{$val} = { %{$arrayref->[$i]} };
delete $hashref->{$val}->{$key};
next ELEMENT;
|