NAME

Net::Domain::Parts - Extract sub-domain, domain and TLD parts of a domain name.

Coverage Status

SYNOPSIS

use Domain::Parts;

my $domain_name = 'www.perlmonks.org';

my ($subdomain, $domain, $tld) = domain_parts($domain_name);

printf(
    "Domain %s, Subdomain %s, TLD: %s\n",
    $domain,
    $subdomain,
    $tld
);

# Domain: perlmonks.org, Subdomain: www, TLD: org

DESCRIPTION

This module takes a fully qualified domain name, and breaks it down into its core components... the TLD, the domain name itself, and any subdomains.

FUNCTIONS

domain_parts($domain_name)

Exported by default. Breaks up an FQDN into it's core components.

Parameters:

$domain_name

Mandatory, String: A fully qualified, valid domain name string.

Returns: A list of subdomain (undef if not present), domain (with TLD attached) and the tld. If the domain isn't valid (ie. doesn't exist), three undefs will be returned.

tld_struct

Not exported by default. Returns the internal store of TLD data.

Returns: Hash reference.

{
    version => 'version_string',
    third_level_domain => {
        'witd.gov.pl'       => 1,
        'fudai.iwate.jp'    => 1,
    },
    second_level_domain => {
        'co.uk'     => 1,
        'prato.it'  => 1,
    },
    top_level_domain => {
        'com'   => 1,
        'ca'    => 1,
        'org'   => 1,
    },
}

version

Never exported. Call it as a fully qualified package function. Returns the version string of the TLD data being used.

my $version = Net::Domain::Parts::version();
print "$version\n";

# 2025-01-21_09-07-06_UTC

tld_list

Not exported by default. Returns the entire list of TLDs, each TLD as a hash key.

Returns: Hash reference.

{
    'org'                       => 1,
    'com'                       => 1,
    'co.uk'                     => 1,
    'org.im'                    => 1,
    'kashiwazaki.niigata.jp'    => 1,
}

AUTHOR

Steve Bertrand, <steveb at cpan.org>

LICENSE AND COPYRIGHT

Copyright 2025 Steve Bertrand.

This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0). You may obtain a copy of the full license at:

http://www.perlfoundation.org/artistic_license_2_0