> Since you are only using the keys why are you > comparing against the values as well?
That would be because I was silly and tried to reuse code from an earlier part of the program where I was comparing against the values as well. ;) Both of you, thanks for your help. After a little fiddling I managed to get it working. Hopefully I won't need help again for awhile, now :) Jolinar "John W. Krahn" <[EMAIL PROTECTED]> wrote in message [EMAIL PROTECTED]">news:[EMAIL PROTECTED]... > 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]