1

たとえば、2 つの URL が同じルート ドメインであるかどうかを検出し、http://services.bestbuy.com/両方http://espanol.bestbuy.com/が同じルート ドメインを持つものとしてカウントされる Perl モジュールがあるかどうか疑問に思っていました。

正規表現でそれが可能であることは知っていますが、誰かがこれを行うモジュールが既にある場合は、それを好むでしょう! 私はまだ何も見つけることができませんでした。

誰か良い解決策を知っていますか?ありがとう!

4

1 に答える 1

2

Domain::PublicSuffixを使用します。

use feature qw( say state );

use Domain::PublicSuffix qw( );
use URI                  qw( );

# Accepts urls as strings and as URI objects.
sub url_root_domain {
   my ($abs_url) = @_;
   state $parser = Domain::PublicSuffix->new();
   return $parser->get_root_domain( URI->new($abs_url)->host );
}

my $url1 = 'http://services.bestbuy.com/';
my $url2 = 'http://espanol.bestbuy.com/';

say url_root_domain($url1) eq url_root_domain($url2) ? "same" : "diff";
于 2012-06-08T04:31:55.443 に答える