Jolinar Of Malkshur wrote:
> 
> Ok, this still deals with that Perl class I'm taking, so be warned.  And
> please don't laugh at my coding, I'm very new to Perl, so it's bound to look
> pathetic to those of you who have been doing this longer.
> 
> My problem is this:
> 
> I'm taking the results from a hash search (that determines if a particular
> student name and password combination is valid) and passing it to another
> hash search (which is part of an if loop), which is supposed to print out
> the assignments for the student.  That works with one small problem, it
> reprints the students name under the line with the assignments.  The other
> problem is that if I repeat the loop, it doubles the results, so I get two
> identicle lines.
> 
> Here's my search code.  Any suggestions on what I'm doing wrong would be
> greatly appreciated.
> 
> $nk is the password, $search is the student name searched out previously.
> 
>   while (@n = each %assignments) {
>      if (grep /($nk)/, @n) {
>   $keys[++$#keys] = $n[0];
          ^^^^^^^^    ^^^^^
You should probably use push() instead of $keys[++$#keys] ($keys[@keys]
would also work).  Since you are only using the keys why are you
comparing against the values as well?


>      }
>  }
> 
>  if (@keys) {
>      print "Your assignments: \n";
>      foreach $password (sort { $b cmp $a } @keys) {
>   print "   $search, $assignments{$password}\n";
> }
>  } else {
>      print "That password doesn't exist.\n";
>  }


To determine whether a hash contains a certain key use the exists()
funtion:

my %hash = ( one => 'first', two => 'second', three => 'third' );

for my $key ( qw/two fred/ ) {
    if ( exists $hash{ $key } ) {
        print "The key $key exists\n";
        }
    else {
        print "The key $key does not exist\n";
        }
    }



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to