NAME

ParseUtil::Domain - Domain parser and puny encoder/decoder.

SYNOPSIS

use ParseUtil::Domain ':parse';

  my $processed = parse_domain("somedomain.com");
  #$processed:
  #{
      #domain => 'somedomain',
      #domain_ace => 'somedomain',
      #zone => 'com',
      #zone_ace => 'com'
  #}

DESCRIPTION

This purpose of this module is to parse a domain name into its respective name and tld. Note that the tld may actually refer to a second or third level domain (i.e. co.uk or plc.co.im). It also provides respective puny encoded and decoded versions of the parsed domain.

This module makes use of the data provided by the Public Suffix List (http://publicsuffix.org/list/) to parse tlds.

INTERFACE

parse_domain

parse_domain(string)
Examples:
 1. parse_domain('somedomain.com');

  Result:
  {
      domain     => 'somedomain',
      zone       => 'com',
      domain_ace => 'somedomain',
      zone_ace   => 'com'
  }

2. parse_domain('test.xn--o3cw4h');

  Result:
  {
      domain     => 'test',
      zone       => 'ไทย',
      domain_ace => 'test',
      zone_ace   => 'xn--o3cw4h'
  }

3. parse_domain('bloß.co.at');

  Result:
  {
      domain     => 'bloss',
      zone       => 'co.at',
      domain_ace => 'bloss',
      zone_ace   => 'co.at'
  }

4. parse_domain('bloß.de');

  Result:
  {
      domain     => 'bloß',
      zone       => 'de',
      domain_ace => 'xn--blo-7ka',
      zone_ace   => 'de'
  }

puny_convert

Toggles a domain between puny encoded and decoded versions.

use ParseUtil::Domain ':simple';

my $result = puny_convert('bloß.de');
# $result: xn--blo-7ka.de

my $reverse = puny_convert('xn--blo-7ka.de');
# $reverse: bloß.de

DEPENDENCIES

Net::IDN::Encode
Net::IDN::Punycode
Regexp::Assemble::Compressed
The Public Suffix List at http://publicsuffix.org/list/.

CHANGES

  • Updated public suffix list.

  • Added a bunch of new TLDs (nTLDs).