in reply to XML::Simple giving a non-specific error

I'd say that the reason why the parser does not complain about line 8 is that it has no valid reason to say an ERROR element cannot contain another ERROR element.

In order for the parser to know this you would have to use a DTD to describe the valid document tree.

Consider this syntactically valid set of tags:

<ERROR> <FOO> </FOO> <ERROR> <BAR> </BAR> </ERROR> </ERROR>
Now, if you remove the last line, the XML becomes invalid. It would be tempting to fix the problem in line 4 but this would give a completely different document structure.

-- Time flies when you don't know what you're doing