in reply to problem with exists

Your code is not checking $onname it is checking '$onname'. No interpolation ever happens inside single 's. Change to $whop{$onname} or $whop{"$onname"}. The first one is idiomatic in this case, and the second should be reserved for cases where additional key information needs to added to the variable contents.

Update: as chromatic points out, make sure to chomp your input from the file.

As I said before, I also strongly recommend not using structures like
print <<EOF; some text EOF
unless absolutely necessary. If you use standard indentation for this code, you will mess it up. And if you are not indenting yet, get in the habit. When I see something like:
if { ... } else { ... } }
I have a hard time knowing what the second } matches.

And just to make sure, you want this code to loop through a list of new members and tell you which ones are online. You are not expecting this code to loop through who is online and tell you which ones are on the new members list. right? I ask because unless I'm just plain not seeing something, it looks designed to do the former, and not the latter.