If you want fancy syntax hilighting, you might just use
PPI::HTML and then print from your favorite web browser
(most of which will automatically add appropriate headers/footers).
And if you want to morph the code a bit before printing,
PPI::HTML makes it pretty easy to just regex for spans.
If you really feel the need to get crazy with reformatting,
you could use PPI to generate XML, then
apply XSLT or somesuch.
Perl Contrarian & SQL fanboy