This sounds like what I wanted to suggest.
So maybe you'd have:
if (my $result = whois($foo) )
{
#here we do something if the whois failed
}
or if you want something more intuitive, name the "whois" function "is_taken" or something.
I'm not sure if memory-wise, the $result above would exist after the if statement, but it's only scoped for the if statement. If it is only allocated for the duraction of the if block however, that'd be a good way to not have an extra string/token sitting useless in memory for very long when whois succeeds.