This week, Perl 101 introduces you to subroutines and teaches youhow to structure your code for maximum reusability. Also included: returnvalues, my() and local() constructs, and a marriage proposal.
Ask a geek to define the term "subroutine", and he'll probably tell you that a subroutine is "a block of statements that can be grouped together as a named entity." Since this definition raises more questions than answers [the primary one being, what on earth are you doing hanging around with geeks in the first place], we'll simplify things by informing you that a subroutine is simply a set of program statements which perform a specific task, and which can be called, or executed, from anywhere in your Perl program.
There are two important reasons why subroutines are a "good thing". First, a subroutine allows you to separate your code into easily identifiable subsections, thereby making it easier to understand and debug. And second, a subroutine makes your program modular by allowing you to write a piece of code once and then re-use it multiple times within the same program.
Let's take a simple example, which demonstrates how to define a sub-routine and call it from different places within your Perl script:
#!/usr/bin/perl
# define a subroutine
sub greatest_movie
{
print "Star Wars\n";
}
# main program begins here
print "Question: which is the greatest movie of all time?\n";
# call the subroutine
&greatest_movie;
# ask another question
print "Question: which movie introduced the world to Luke Skywalker, Yoda
and Darth Vader?\n";
# call the subroutine
&greatest_movie;
Now run it - you should see something like this:
Question: which is the greatest movie of all time?
Star Wars
Question: which movie introduced the world to Luke Skywalker, Yoda and
Darth Vader?
Star Wars
Let's take this line by line. The first thing we've done in
our Perl program is define a new subroutine with the "sub" keyword; this keyword is followed by the name of the subroutine. All the program code attached to that subroutine is then placed within a pair of curly braces - this program code could contain loops, conditional statements, calls to other subroutines, or calls to other Perl functions. In the example above, our subroutine has been named "greatest_movie", and only contains a call to Perl's print() function.