1

我正在尝试创建以下数组:

@domains = ("lmcaster.espn.go.com", "gomailfileus.go.com");

我正在尝试使用正则表达式,但我没有成功填充数组。我很确定我的正则表达式部分搞砸了。到目前为止,这是我的代码:

#!/usr/bin/perl
use strict;
use warnings;

my $dns_output = <<END;
199.181.132.138  lmcaster.espn.go.com (300)
199.181.132.133  gomailfileus.go.com (300)
END

my @domains = ($dns_output =~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\s([[:graph:]])\s[[:graph:]]/);

for my $d (@domains) {
        print "Domain: $d\n";
}

有人可以指出我做错了什么吗?

4

2 回答 2

3

您忘记首先添加/g修饰符,然后添加+量词,以便第二次捕获整个域(而不仅仅是它的第一个符号)。

my @domains = $dns_output =~ /(?:[0-9]+\.){3}[0-9]+\s*([[:graph:]]+)/g;

我在这里也压缩了 IP 分组,并添加了*量词来\s分隔域。

于 2013-06-02T21:16:10.523 回答
1
my @domains = $dns_output =~ /^ \d+[.]\d+[.]\d+[.]\d+ \s+ (\S+) /xmg;
于 2013-06-02T21:16:10.590 回答