I don't think this is necessarily a bug in
Expat.pm, but it is definitely an artifact. Since the expat interface can handle so many different types of data (scalars, scalar refs, tied handles), this warning is generated when Expat.pm is trying to determine how to parse the argument given. Apparently
XML::Simple passes the argument as a string, which causes that eval block to puke.
I think mod_perl is setting up a $SIG{__DIE__} handler, and it doesn't care whether or not it occured in an eval. As to a solution, what about enclosing XMLin in its own block, that contains no strict 'refs' ?