The perl-only XML parsers I have looked at are:
- XML::SAX::PurePerl, included in XML::SAX, which can be used by all the SAX based modules, including XML::Simple. It works reasonably well, but will not process external entities.
- XML::Parser::Lite, included in SOAP::Lite, which emulates the XML::Parser interface. It only parses the subset of XML used by SOAP though (eg no DTD)
- XML::Stream::Parser, included in XML::Stream, which only parses the subset of XML used in Jabber messages.
As you see none of them is a complete XML parser, so you might want to check if they work for the kind of XML you have to deal with (and for the kind of XML that you might have to deal with in the future!).
2 other comments: some of the XML modules are based on libxml2 instead of expat (XML::LibXML for example). And I don't know about AIX, but at least for Solaris you can get expat as a pre-compiled package.