I use Text::Template, which helps seperate the HTML from the perl code. See my posts at
Node 12215 (in the thread
Design vs. Code vs. Maintenance) and
Node 14368 (in the thread
Perl solutions for large websites?)
Basically Text::Template lets you embed Perl code into HTML. This can be a complete program, or a variable (the latter is the way I recommend). Thus you can have a perl program that does all the calculating, then dumps variables into an HTML file. Text::Template is flexible enough to support just about any situation, and you avoid the "my site doesn't work like that" problems of full site-maintainers such as HTML::Mason.