I am of course sure that everyone reading this is well aware of scripting best practices and always writes beautifully neat and well-set-out scripts that will still have meaning when you return to them in six
months time. You might not then need perltidy for your own
Tip of the Trade:
Even if it’s not your own, messy code is a fact of life for every programmer. Clean up messes with perltidy, an app generated from the Perl module Perl::Tidy.
Even so, from time to time you might come across a script left
over from before your time or written by a colleague in a hurry that on
examination bears a strong resemblance to alphabet spaghetti.
Enter perltidy, a program generated from the Perl module
Perl::Tidy, which saves you time by unmangling Perl code for you. You can
download it from CPAN, or it may be available through your distro. (Debian and
Ubuntu both provide it.)
Basic operation is simply to type perltidy badscript.pl. This
will leave the initial file alone and create a new tidied-up file with a
Alternatively, you can use the -b switch to do the opposite: Make a backup of the original file and then edit it in-line. The -syn switch will run a syntax check of the original code at the same time.
I tried it out on the second
prize entry in the 5th annual Obfuscated Perl Contest. Although it didn’t simplify the program logic any, it definitely made it more
readable and gave a better chance of figuring out what was going on. Try it
out for yourself, and see if it can save you some time and mental effort in
disentangling confusing code.
Ed Note (Oct. 13, 2008): Thanks to
Randal L. Schwartz for pointing out it’s a good idea to set up tests for your code, to check that it does the same thing after perltidy is
finished as it did before. As he discusses here, ultimately the only thing that can interpret Perl code entirely reliably is the Perl interpreter itself. So be aware that there are circumstances in which Perltidy (and similar programs) can break code!