Expounding on Corion's comment:
in reply to How to return Hashref from one script to another script?
How are you invoking and communicating with your child? If you are using text (e.g. piping, backticks or a common file), then XML makes sense because you are already handling it. Data::Dumper and eval could also work, but that's a little more hackish.
Consider using threads and threads::shared; then you can literally pass the object. This will require some additional crafting if your child script is canned.
Finally, why are you doing interprocess communication? It generally makes things profoundly more complicated. There are times when it's necessary, but I try to avoid it when I can.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.