Your logic for finding out whether the domain is in the hash is wrong.
You should use something like
if (exists $hash{$key}) {
print "\n";
} else {
print "\nThe domain you entered is not on the list above ...";
}
You loop through the keys of your hash,
so you take the first key (attention: they are usually not in the same order as you put them in the hash) and compares it to your
$selection. Most likely it won't be the same, so your else-part is executed, where you have built in an
exit, too, so it prints your failure statement and stops. Even if your
$selection is one of your keys, unless it is the first key in the hash, your program won't find it.
Greetings,
Janek Schleicher
PS: In general it is not a good idea to name a hash
%hash. That it is a hash is shown by the sigil
%. Better give it a name that describes what's inside the hash, here an idea would be to call that variable like
%domain.
Something similiar could be said about
$key, but here you could avoid it completely, e.g. to print the list of domains, you could just write
print " $_\n" foreach keys %hash