Structure and Statements in Perl

In this second part of a three-part series on Perl programming, you’ll learn how to structure your programs, and how to use statements. This article is excerpted from chapter one of the book Beginning Perl, Second Edition by James Lee (Apress; ISBN: 159059391X).

Program Structure

One of the things we want to develop throughout this book is a sense of good programming practice. Obviously this will not only benefit you while using Perl, but in almost every other programming language too. The most fundamental notion is how to structure and lay out the code in your source files. By keeping this tidy and easy to understand, you’ll make your own life as a programmer easier.

Documenting Your Programs

As we mentioned earlier, a line starting with a hash, or pound sign ( # ), is treated as a comment, and ignored. This allows you to provide comments about what your program is doing, something that will become extremely useful to you when working on long programs, or when someone else is looking over your code. For instance, you could make it quite clear what the preceding program was doing by saying something like this:

#!/usr/bin/perl -w

# print a short message
print "Hello, world!n";

A line may contain some Perl code, and be followed by a comment. This means that we can document our program “inline” like this:

#!/usr/bin/perl -w

print "Hello, world!n"; # print a short message

When we come to write more advanced programs, we’ll take a look at some good and bad commenting practice.

Keywords

A keyword is a term in Perl that has a predefined meaning. One example would be the term use as we saw in the statement

use warnings;

Other types of keywords include built-in functions such as print() and control flow constructs such as if and while . We will talk about many built-in functions and control flow constructs in detail as we progress in our discussion of Perl.

It’s a good idea to respect keywords and not give anything else the same name as one. For example, a little later on we’ll learn that you can create and name a variable, and that calling your variable $print is perfectly allowable. The problem with this is that it leads to confusing and uninformative statements like print $print . It is always a good idea to give a variable a meaningful name, one that relates to its content in a logical manner. For example, $my_name , @telephone_numbers , %account_info , and so on, rather than $a , @b , and %c .

{mospagebreak title=Statements and Statement Blocks}

If functions are the verbs of Perl, then statements are the sentences. Instead of a period, a statement in Perl usually ends with a semicolon, as we saw earlier:

print "Hello, world!n";

To print some more text, we can add another statement:

print "Hello, world!n";
print "Goodbye, world!n";

We can also group together a bunch of statements into a block—which is a bit like a paragraph—by surrounding them with curly braces {…} . We’ll see later how blocks are used to specify a set of statements that must happen at a given time, and also how they are used to limit the effects of a statement. Here’s an example of a block:

{
print "This is ";
print "a block ";
print "of statements.n";
}

Notice how indentation is used to separate the block from its surroundings. This is because, unlike paragraphs, you can put blocks inside of blocks, which makes it easier to see on what level things are happening. This:

print "Top leveln";
{
print "2nd leveln";
{
print "3rd leveln";
}
print "Where are we?";
}

is easier to follow than this:

print "Top leveln";
{
print "2nd leveln";
{
print "3rd leveln";
}
print "Where are we?";
}

As well as curly braces to mark out the territory of a block of statements, you can use parentheses to mark out what you’re giving a function. The set of things given to a function are the arguments; and you pass the arguments to the function. For instance, you can pass a number of arguments to the print() function by separating them with commas:

print "here ", "we ", "print ", "several ", "strings.n";

The print() function happily takes as many arguments as it is given, and it produces the expected answer:

here we print several strings.

Surrounding the arguments with parentheses clears things up a bit:

print("here ", "we ", "print ", "several ", "strings.n");

In the cases where parentheses are optional, the important thing to do is to use your judg ment. Sometimes something will look perfectly understandable without the parentheses, but when you’ve got a complicated statement and you need to be sure of which arguments belong to which function, putting in the parentheses is useful. Always aim to help the readers of your code, and remember that these readers will more than likely include you.

Please check back for the conclusion to this article.

Google+ Comments

Google+ Comments