in reply to Managing large CGI pages
I'm also a fan of here documents, and sometimes of embedded-code solutions such as Apache::eperl or Apache::embperl. What I find easiest to do is to write up the HTML with no code in it first (or ideally, have someone else do that for me), and then stick in variables, etc. later on. In order to keep the pages themselves clean looking, I find it a good idea to separate functions into a file or files that are then required, and have only variables and function calls within the HTML itself. It's very straightforward, and the whole thing basically becomes a template easily edittable by a non-coder.