Mozilla::PublicSuffix is a Perl module that provides a single function that returns the public suffix of a domain name by referencing a parsed copy of Mozilla's Public Suffix List. From the official website at http://publicsuffix.org:
A "public suffix" is one under which Internet users can directly register names. Some examples of public suffixes are .com, .co.uk and pvt.k12.wy.us. The Public Suffix List is a list of all known public suffixes.
A copy of the official list is bundled with the distribution. As the official list continues to be updated, the bundled copy will inevitably fall out of date. Therefore, if the bundled copy of found to be over thirty days old, this distribution's installer provides the option to check for a new version of the list and download/use it if one is found.
use feature "say";
use Mozilla::PublicSuffix "public_suffix";
say public_suffix("org"); # "org"
say public_suffix("perl.org"); # "org"
say public_suffix("perl.orc"); # undef
say public_suffix("ga.gov.au"); # "gov.au"
say public_suffix("ga.goo.au"); # undef