People seem to like the idea of separating code from presentation, and in general it's a good idea, but it can impose an extra burden of complexity. For a small project, jumping on the "reuse and generality" bandwagon isn't a particularly good idea, unless you want to turn it into a large project.
There's some pretty good discussion of code-separation in the context of HTML templating at Reusable template components with HTML::Template.
Found a typo in this node? /msg me
% man 3 strfry