Perl 101 (Part 5) - Sub-Zero Code - ...And Memorable Friends (
Page 3 of 7 )
Of course, defining a subroutine is only half of the puzzle - for it to be of
any use at all, you need to invoke it. In Perl, this is accomplished by calling
the subroutine by its name, as we've done in the last line of the example above.
When invoking a subroutine in this manner, it's usually a good idea to precede
the name with an ampersand [&]- this is not essential, though, and the
following would also work:
#!/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;
However, it's good programming practice to precede the name
of a Perl subroutine with an ampersand when invoking it - this helps to
differentiate the Perl subroutine from array or scalar variables that may have
the same name, and from pre-defined Perl functions. For example, consider this
piece of code, in which we've defined a subroutine called &print, which also
happens to be the name of the in-built Perl print() function:
#!/usr/bin/perl
# define a subroutine
sub print
{
print "Ross\n";
}
# main program begins here
print "Question: which Friend once had a pet monkey?\n";
# call the subroutine
print;
In this case, when you run the program, you'll get the
following:
Question: which Friend once had a pet monkey?
Here, Perl assumes that the line containing the print
statement is a call to the in-built Perl print() function, rather than the
user-defined Perl &print subroutine. To avoid this kind of error, you should
either avoid naming your subroutines after reserved words, or precede the
subroutine call with an ampersand. In the example above, if you changed the last
line from
print;
to
&print;
Perl would understand the subroutine call correctly, and
display the desired output.
Question: which Friend once had a pet monkey?
Ross
This article copyright Melonfire
2000. All rights reserved.