From: Grant M. <gr...@us...> - 2002-10-17 08:44:36
|
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; |