I know that if separating code from content is an issue, then wouldn't it be simpler to move on to Mason? However, I'm not particular fan of this either since many Mason scripts I looked at appeared to be quite a mess.
With embeded Perl it is very easy to write HTML/Perl pages which look like a mess. It requires some self-dicpline to control use of Perl in templates. But it is possible to do it in right way (put business logic in modules, use Perl code in templates only to produce output, separate big sections of Perl and HTML). There exist quite good examples of HTML::Mason code: sources of www.masonhq.com, sources of Request Tracker.
--
Ilya Martynov
(http://martynov.org/)