In addition to the other fine modules and approaches other monks have pointed out, you may also want to look at Net::HTTPServer as a way to add HTTP functionality to your existing application. I posted about my experiences trying to wrap an existing CGI::Application web application here and here.
Net::HTTPServer doesn't do much on its own by way of cookies, headers, redirects, and other such things, but it does have a fairly good interface that lets you add whatever functionality you need. From your original post, it looks like you wouldn't have to do much.
For the XML processing, I would strongly recommend XML::Simple. It's powerful and easy to use. I doubt you'll need something more complex, but if you do, I've heard good things about XML::LibXML.
Whitepages.com Development Manager (DSMS)
code('Perl') || die;