I've just tried DBD::AnyData.
My first effort was to parse 2 XML files and to inner join them. It worked well. Then I read documentation :) and saw that
DBD::AnyData does not currently support using multiple tables in a single SQL statement. However it does support using multiple tables and querying them separately with different SQL statements. This means you can simulate joins by creating two statement handles and using the values from the first handle as a lookup key for the second handle.
Both statements worked: