- treat restricted/reserved TLDs (invalid, test, example, localhost) as invalid (thanks, Steve Bertrand!) # Purpose: Check whether a top level domain is valid for a domain. sub tld { my $self = shift; my %args = $self->_rearrange([qw( address )], \@_); unless (eval {require Net::Domain::TLD; Net::Domain::TLD->VERSION(1.65); 1}) { die "Net::Domain::TLD not available"; } my $host = $self->_host( $args{address} or return $self->details('tld') ); my ($tld) = $host =~ m#\.(\w+)$#; my %invalid_tlds = map { $_ => 1 } qw(invalid test example localhost); return defined $invalid_tlds{$tld} ? 0 : Net::Domain::TLD::tld_exists($tld); }