Chapter 10. Building Larger Programs
This chapter looks at how to break up a program into pieces and includes some of the concerns that arise when we put those pieces back together again, or when many people work together on the same program.
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,
we’ve seen that 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 matter at hand . . . .
After writing a dozen programs using this routine, the Skipper realizes that the output is excessively ...
Get Intermediate Perl now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.