Once
you start using loops and conditional statements, you need to think seriously about
formatting. You have many options when
formatting Perl code on the page. Compare
these variant ways of formatting an if
statement inside a while
loop
:
while ( $alive ) { if ( $needs_nutrients ) { print "Cell needs nutrients "; } }
while ( $alive ) { if ( $needs_nutrients ) { print "Cell needs nutrients "; } }
while ( $alive ) { if ( $needs_nutrients ) { print "Cell needs nutrients "; } }
while($alive){if($needs_nutrients){print "Cell needs nutrients ";}}
These code fragments are equivalent as far as the Perl interpreter is concerned. That's because Perl doesn't rely on how the statements are laid out on the lines; Perl cares only about the correct order of the syntactical elements. Some elements need some whitespace (such as spaces, tabs, or newlines) between them to make them distinct, but in general, Perl doesn't restrict how you use whitespace to lay out your code.
Formats A and B
are common ways to lay out code. They both make the program structure clear to the
human reading it. Notice how the statements that have a block associated with
them—the while
and if
statements—line up the curly braces and indent the statements
within the blocks. These layouts make clear the extent of the block associated with
the statements. (This can be critical for long, complicated blocks.) The statements
inside the blocks are indented, for which you normally use the Tab key or groups of
four or eight spaces. (Many text editors allow you to insert spaces when you hit the
Tab key, or you can instruct them to set the tab stops at four, eight, or whatever
number of spaces.) The overall structure of the program becomes clearer this way;
you can easily see which statements are grouped in a block and associated with a
given loop or conditional. Personally, I prefer the layout in Format A, although I'm
also perfectly happy with Format B.
Format C is an example of badly
formatted code. The flow control of the code isn't clear; for instance, it's hard to see if
the print
statement is in the block of the
while
statement.
Format D demonstrates how hard it is to read code with essentially no formatting, even a simple fragment like this.
The Perl style guide, available from the main Perl manual page or from the command line by typing:
perldoc perlstyle
has some recommendations and some suggestions for ways to write readable code. However, they are not rules, and you may use your own judgment as to the formatting practices that work best for you.