AltBlue wanted to test a given string to see if was syntactically valid
as a domain name. Here's the code that was too long to type into the chatterbox.
sub could_be_a_host {
my @a = split /\./, shift, -1;
@a > 0 and
not grep !/^[a-z0-9\-]+$/i, @a and
not grep /^\d+$/, @a and
not grep /^-|-$/, @a;
}
or, a slightly faster version:
sub could_be_a_host {
my @a = split /\./, shift, -1;
return 0 unless @a;
for (@a) {
return 0 unless /^[a-z0-9\-]+$/i;
return 0 if /^\d+$/;
return 0 if /^-/;
return 0 if /-$/;
}
1;
}
(Modified slightly per
tye's suggestion, thanks!)