100 万の Web アドレスのリストがあります。すべての URL の TLD を抽出し、TLD ごとに複数のファイルを作成する必要があります。たとえば、tld として .com を含むすべての Web アドレスを収集し、それを 1 つのファイルにダンプし、別のファイルは .edu tld などに適用します。さらに各ファイル内で、ドメイン名、サブドメインなどのアルファベット順にソートする必要があります。
URI モジュールを使用して、各 Web アドレスの tld とドメインおよびホスト名を抽出しました。com tld ですべての Web アドレスを収集し、それらを 1 つのファイルにダンプするにはどうすればよいですか? そして、各ファイルを tld 、次にドメイン、サブドメインなどでソートする方法は? ポインタはありますか?
while(my $line = <$fh1>){
my $url = $line;
my @components = split(/\./, $url);
my $n_comp = ($components[-1] =~ /^edu|com|net|org|gov$/) ? 2 : 3;
my $domain = lc(join '.', @components[-$n_comp .. -1]);
$domain =~ s/^\.//; # Remove leading . if there is one.
print $fh3 $domain;
print $fh3 "\n";
my $host = URI->new($url)->host();
# Treat relative URLs as absolute URLs with missing http://.
$url = "http://$url" if $url !~ /^\w+:/;
$host =~ s/\.\z//; # D::PS doesn't handle "domain.com.".
print $fh2 $host;
print $fh2 "\n";
$dps->get_root_domain($host)
or die $dps->error();
print $fh4 $dps->tld();
print $fh4 "\n";
}