The core module
B::Deparse may also be of use. It uses compiled code and turns it into formatted code, pretty neatly. I don't know about perlstyle conformance, but it certainly seems that way.
The difference between it and perltidy is that
B::Deparse doesn't know what you've written, but just what is to be executed, based on what you have written. Thus, it skips comments, and it may output "modified" code, as the internal representation may differ from your own code (many processing steps are taken, such as optimisation...).
Perhaps more interesting than useful, but still worth a mention.
-nuffin
zz zZ Z Z #!perl