Приглашаем посетить
Арцыбашев (artsybashev.lit-info.ru)

Section A.2.  Answers to Chapter 3 Exercises

Previous
Table of Contents
Next

A.2. Answers to Chapter 3 Exercises

  1. Here's one way to do it:

        print "Enter some lines, then press Ctrl-D:\n"; # or maybe Ctrl-Z
        @lines = <STDIN>;
        @reverse_lines = reverse @lines;
        print @reverse_lines;
    

    or, even more simply:

        print "Enter some lines, then press Ctrl-D:\n";
        print reverse <STDIN>;
    

    Most Perl programmers would prefer the second one as long as you don't need to keep the list of lines for later use.

  2. Here's one way to do it:

        @names = qw/ fred betty barney dino wilma pebbles bamm-bamm /;
        print "Enter some numbers from 1 to 7, one per line, then press Ctrl-D:\n";
        chomp(@numbers = <STDIN>);
        foreach (@numbers) {
          print "$names[ $_ - 1 ]\n";
        }
    

    We have to subtract one from the index number so the user can count from 1 to 7 even though the array is indexed from 0 to 6. Another way to accomplish this would be to have a dummy item in the @names array, like this:

        @names = qw/ dummy_item fred betty barney dino wilma pebbles bamm-bamm /;
    

    Give yourself extra credit if you checked to make sure that the user's choice of index was in the range 1 to 7.

    Here's one way to do it if you want the output all on one line:

        chomp(@lines = <STDIN>);
        @sorted = sort @lines;
        print "@sorted\n";
    

    To get the output on separate lines, do it this way:

        print sort <STDIN>;
    

    Previous
    Table of Contents
    Next