I'm not sure why you'd want the database to be XML, but if you do,
DBD::AnyData can read and write XML databases using
XML::Twig. You'd probably be better off with SQLite, PostgreSQL, or MySQL as a backend. You probably want to use a web application framework like
CGI::Appplication or, for heavy duty
Catalyst or
Jifty. You probably want a database ORM such as
DBIx::Class or
Class::DBI. There are a number of threads on this site on all of those modules including some recent ones on comparing the web app frameworks.