Exercises

See Appendix A for answers to the following exercises:

  1. [12] Write a subroutine, called &total, which returns the total of a list of numbers. Hint: The subroutine should not perform any I/O; it should process its parameters and return a value to its caller. Try it out in this sample program, which exercises the subroutine to see that it works. The first group of numbers should add up to 25.

        my @fred = qw{ 1 3 5 7 9 };
        my $fred_total = &total(@fred);
        print "The total of \@fred is $fred_total.\n";
        print "Enter some numbers on separate lines: ";
        my $user_total = &total(<STDIN>);
        print "The total of those numbers is $user_total.\n";
  2. [5] Using the subroutine from the previous problem, make a program to calculate the sum of the numbers from 1 to 1,000.

  3. [18] Extra credit exercise: Write a subroutine, called &above_average, which takes a list of numbers and returns the ones which are above the average (mean). (Hint: Make another subroutine that calculates the average by dividing the total by the number of items.) Try your subroutine in this test program.

        my @fred = &above_average(1..10);
        print "\@fred is @fred\n";
        print "(Should be 6 7 8 9 10)\n";
        my @barney = &above_average(100, 1..10);
        print "\@barney is @barney\n";
        print "(Should be just 100)\n";

Get Learning Perl, Fourth Edition 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.