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>