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.
in reply to What is the best approach?