百万のURLのリストがあります。URLごとにTLDを抽出し、TLDごとに複数のファイルを作成する必要があります。たとえば、.comをtldとして含むすべてのURLを収集し、それを1つのファイルにダンプし、別のファイルを.edutldにダンプします。さらに各ファイル内で、ドメイン、次にサブドメインなどでアルファベット順に並べ替える必要があります。
誰かが私にこれをperlで実装するための有利なスタートを与えることができますか?
host
メソッドを使用してホストを取得し、get_root_domain
して、ホスト名を解析します。tld
またはメソッドを使用してsuffix
、実際のTLDまたは疑似TLDを取得します。
use feature qw( say );
use Domain::PublicSuffix qw( );
use URI qw( );
my $dps = Domain::PublicSuffix->new();
for (qw(
http://www.google.com/
http://www.google.co.uk/
)) {
my $url = $_;
# Treat relative URLs as absolute URLs with missing http://.
$url = "http://$url" if $url !~ /^\w+:/;
my $host = URI->new($url)->host();
$host =~ s/\.\z//; # D::PS doesn't handle "domain.com.".
$dps->get_root_domain($host)
or die $dps->error();
say $dps->tld(); # com uk
say $dps->suffix(); # com co.uk
}