1

私はタイトルが言うことをやろうとしています、そして私はこれを持っています:

sub getDomain {

    my $scalarRef = shift;
    my @from_domain = split(/\@/,$$scalarRef);

    if($from_domain[1] =~ m/^.*?(\w+\.\w+)$/){
       print "$from_domain[1] $1" if($username eq 'xxx');
       return $1;
    }
}

user@domain.com が domain.com を返す場合は問題なく動作しますが、もちろん domain.co.uk は .co.uk を返すため、domain.co.uk が必要です。これをどのように進めるかについての提案は、私はモジュールを推測しており、ある種のtldルックアップテーブルを提案している人もいます。

4

2 に答える 2

8

正規表現を使用しないでください。

use Email::Address;
my ($addr) = Email::Address->parse('foo@domain.co.uk');
print "Domain: ".$addr->host."\n";
print "User:   ".$addr->user."\n";

版画:

Domain: domain.co.uk
User:   foo
于 2013-08-07T05:00:54.030 に答える