in reply to What is the best approach?
At all cost try to separate HTML/CSS/JS via some sort of templating (TT/Mason) from your real work..
I would start creating the app as a separate modules to do the work not thinking of the web side. I mean just to have at least somewhat working variant with console scripts.
When you have something implemented see what would be the best way/framework you may use.
What framework you will use depends on who will do the work. If you expect you to be the primary person who will do the job, then you can go abit low-level i.e. no ORM and may be Mason over TT/Something
If you expect more collaborative work then think about DBI-ORM's, Catalyst and TT/Mason
If you don't use ORM, try to pack the SQL in small sub's. It is still good idea to read ORM docs so you can get some idea how they abstract the access.
Thinking for the front end, here is a good advice to use some framework like JQuery (pure JS for more complex stuff is a pain).
I will definitely go with mod_perl.
Unless you go with Catalyst which last I heard come with lighthttp which in some cases can be very good solution. (i.e. after you install it u have almost zero configuraiton)
For XML i think XML::Twig is good, don't know does it support namespaces yet..;(, last time I used it it didn't
If it was me I would not use XML :)) if possible...better SQLite or DBM::Deep (seems like a good candidate) or JSON,YAML.
Design, but don't over-design ! do the stuff, but have some idea how the stuff will work i.e. design :)
And last If you abstract your logic in clases, I would recommend you to take a look at Moose, definitely worth it.
hth