Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

XML::Simple Abort Trap

by zer (Deacon)
on Aug 03, 2010 at 17:55 UTC ( #852710=perlquestion: print w/replies, xml ) Need Help??

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

This one is a bit vague to me. When I load up an xml file which was previously written by XML::Simple i get this error:

A Abort trap
The code is as follows
#!/usr/bin/perl use strict; use Encoding; use XML::Simple; use utf8; use Data::Dumper; $|++; open my $xmlf,"<:encoding(UTF-8)", "xml/breadtitle.xml" or die $!; binmode STDOUT,":utf8"; my $x=XML::Simple->new(); print "A\n"; my $xm=$x->XMLin($xmlf) or die $!; print "B\n";
The xml file is located here

Thank you,

Replies are listed 'Best First'.
Re: XML::Simple Abort Trap
by grantm (Parson) on Aug 04, 2010 at 23:09 UTC

    XML parsers generally want to see the raw bytes - the parser libraries know how to determine the encoding and convert the bytes from the file into characters in Perl's internal encoding.

    In your example code, you're opening the file with an IO layer that will convert the bytes to characters so by the time the data gets to the XML parser the bytes have already been converted to characters. The parser library doesn't know that though so it will try to convert them as if they were bytes and that will fail.

    The short answer is that you're doing too much. Just give XML::Simple the file name:

    #!/usr/bin/perl use strict; use XML::Simple qw(XMLin); use Data::Dumper; my $xm = XMLin("xml/breadtitle.xml"); print Dumper($xm);

    But, having said that, you should never call XMLin without specifying any options. See this article for guidance.

Re: XML::Simple Abort Trap
by zer (Deacon) on Aug 03, 2010 at 18:39 UTC
    This may close this thread, but this seems like it may be a bug somewhere else in the code. When i read the file into a variable first, then give that to XMLin() it works. I don't understand why it wouldnt be able to handle the file handle on its own.

    Thanks everyone who looked at this

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://852710]
Approved by AnomalousMonk
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2022-09-30 09:06 GMT
Find Nodes?
    Voting Booth?
    I prefer my indexes to start at:

    Results (125 votes). Check out past polls.