Hello,
I have a script here, I have been going over and over.
Every time I run it I get several errors, and I have tried to fix them to no avail.
Can someone tell me what line I missed, please?
    Thanks for your help!

#!usr/bin/perl
use warnings;
use strict;

%names = ();
@raw = ();
$fn = "";
$in = '';
@keys = ();
@n = ();
$search = '';

while (<>) {
   chomp;
   @raw = split(" ", $_);
   if ($#raw == 1) { # regular case
      $names{$raw[1]} = $raw[0];
   } else {  # build a first names
      $fn = "";
      for ($i = 0; $i < $#raw; $i++) {
         $fn .= $raw[$i] . " ";
 }
 $names{$raw[$#raw]} = $fn;
}
}

while () {
    print "\n1. Sort names by last name\n";
    print "2. Sort names by first name\n";
    print "3. Search for a name\n";
    print "4. Quit\n\n";
    print "Choose a number: ";

    if ($in eq '1') {
       foreach $name (sort keys %names) {
          print "$name, $names{$name}\n";
   }

 } elsif ($in eq '2') {
    @keys = sort { $names{$a} cmp $names{$b} } keys %names;
    foreach $name (@keys) {
       print "$names{$name} $name\n";
    }
} elsif ($in eq '3') {
     print "Search for what? ";
     chomp($search = <STDIN>);

     while (@n = each %names) {
      if (grep /$search/, @n) {
        $keys[++$#keys] = $n[0];
       }
     }
    if (@keys) {
      print "Names matched: \n";
      foreach $name (sort @keys) {
         print  "  $names{$name} $name\n";
      }
  } else {
      print "None found.\n";
  }

  @keys = ();
} elsif ($in eq '4') {    #quit
   last;
} else {
   print "Not a good answer. 1 to 4 please.\n";
}
}
Thank You Again



--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to