But where are the start(), end() and cdata() subroutines? Are you sure you have defined them in your code? As you are trying to pass reference to those to XML::Parser. If they are not defined, XML::Parser on dereferencing them will cause the error. It's not even a parsing error so there is nothing to do with your XML file.
In fact you can repeat the error with something as simple as
root@xxxxxx:~ # perl -w -e '$a = \&xxxx; &$a'
Undefined subroutine &main::xxxx called at -e line 1.