Prolly nowhere near as efficient, definitely uglier, but it's far more accepting ( perhaps a little too accepting ;), allowing for real-world addresses like 0.168.192.in-addr.arpa, 311.com, private TLDs, and hostnames qualified with trailing periods.
sub verify_FQDN {
return 1 if defined $_[0] && $_[0] =~
m{\A(([a-z0-9]([a-z0-9\-]+)?)?[a-z0-9]\.?)+\Z}i;
}