http://www.perlmonks.org?node_id=80790

lindex has asked for the wisdom of the Perl Monks concerning the following question:

Well I don't really know what to say about this one because its just a bit odd, It seems that XML::Simple makes XML::Parser::Expat try to use something as a GLOB ref when it not supposed to.

lemme explain in code. we have some XML:

<root> <ROW> <confHost>barbarasueseal.com</confHost> <confBlankImage>barbarasueseal.com</confBlankImage> </ROW> ... </root>

and we have a parser script useing XML::Simple:

use XML::Simple; my($xmlstring)=<>; my($xmlObj)=XML::Simple->new(noattr=>1); my($dataref)=$xmlObj->XMLin($xmlstring);

the above code works fine for parsing the above xml but if we use the same code but in side a mod_perl env and get the string from a posted param ala:

my($xmlstring)=$r->param('xmlString');

It fails on my server with this:

Can't use string (" barba") as a symbol ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.6.1/i586 linux/XML/Parser/Expat.pm line 456.

Its kinda weird because XML::Simple/XML::Parser::Expat inside mod_perl it wants todo this:

eval { $ioref = *{$arg}{IO}; }; undef $@;

but anywhere else it does not do this, does anyone know of any problems with XML::Simple and mod_perl and if so do you know of any workarounds/fixes.



lindex