in reply to Separation of content and code

One approach in the spirit of seperation of content and code is to collect your data (into one big hash, e.g.) by whatever means, then put all of your HTML-generating code in a sub (that may call other subs).

This half-way approach removes the need for a templating system, but segregates the HTML code from the business logic, somewhat alleviating the potential to break perl code while changing HTML.