我正在尝试创建以下数组:
@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";
}
有人可以指出我做错了吗?
答案 0 :(得分:3)
首先,您忘记添加/g
修饰符,并添加+
量词,以便捕获整个域(而不仅仅是其第一个符号),第二个。
my @domains = $dns_output =~ /(?:[0-9]+\.){3}[0-9]+\s*([[:graph:]]+)/g;
我也在这里压缩了IP分组,并将*
量词添加到\s
分隔域。
答案 1 :(得分:1)
my @domains = $dns_output =~ /^ \d+[.]\d+[.]\d+[.]\d+ \s+ (\S+) /xmg;