is a pretty easy method to template your application. You embed HTML'esque tags in your code <TMPL_VAL NAME=CONTENT>
, assign content to them $tmpl->param(CONTENT=>$mycontent;
then send the output to the browser print $tmpl->output;
I dont completely abstract the html gen and the code completely as i find it easier (and quicker) to have a "sensible" mix of the two, which of course is subjective, but works well for me.
If you're going the whole maintaince angle on your designs, check out CGI::Application which is a good method to build structured web sites that are easy to maintain and add new functionality.