У меня есть список миллионов веб-адресов.Я должен извлечь TLD для каждого URL и сделать несколько файлов для каждого TLD.Например, собрать все веб-адреса с .com как tld и вывести их в 1 файл, другой подать заявку на .edu tld и так далее.Далее в каждом файле я должен отсортировать его в алфавитном порядке по доменным именам, после чего по поддоменам и т. Д. Кто-нибудь может произвести переход для применения этого в perl?
Я использовал модуль URI для извлечения tld и domainимена хостов для каждого веб-адреса.Как собрать все веб-адреса с помощью com tld и сбросить их в 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";
}