July 2012
Intermediate to advanced
396 pages
9h 16m
English
Content preview from Intermediate Perl, 2nd Edition
Chapter 11. Building Larger Programs
As our programs get larger, we start to realize that some of our code applies to other jobs we have. We can move some of that code to a library that we can share among several programs, and even with other people. We can also use libraries to compartmentalize code by its function or use, keeping it separate from code that does unrelated tasks.
The Cure for the Common Code
The Skipper writes many Perl programs to provide navigation for all the common…
July 2012
Intermediate to advanced
396 pages
9h 16m
English
Content preview from Intermediate Perl, 2nd Edition
Chapter 11. Building Larger Programs
As our programs get larger, we start to realize that some of our code applies to other jobs we have. We can move some of that code to a library that we can share among several programs, and even with other people. We can also use libraries to compartmentalize code by its function or use, keeping it separate from code that does unrelated tasks.
The Cure for the Common Code
The Skipper writes many Perl programs to provide navigation for all the common ports of call for the Minnow. He finds himself cutting and pasting a very common routine into each program:
sub turn_toward_heading {
my $new_heading = shift;
my $current_heading = current_heading( );
print "Current heading is ", $current_heading, ".\n";
print "Come about to $new_heading ";
my $direction = 'right';
my $turn = ($new_heading − $current_heading) % 360;
if ($turn > 180) { # long way around
$turn = 360 − $turn;
$direction = 'left';
}
print "by turning $direction $turn degrees.\n";
}
This routine gives the shortest turn to make from the current heading returned by the subroutine current_heading to a new heading given as the first parameter to the subroutine.
The first line of this subroutine might have read instead:
my ($new_heading) = @_;
This is mostly a style call: in both cases, the first parameter ends up in $new_heading. However, removing the items from @_ as they are identified does have some advantages. So, we stick (mostly) with the “shifting” style of argument parsing. Now back to the ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.