我使用Net :: Whois :: Raw从文本文件中查询域列表,然后通过解析来输出每个域的相关信息。Perl:模式匹配一个字符串,然后打印下一行/行
这一切都很顺利,直到我点击Nominet的结果,因为我需要的信息从来没有与我模式匹配的信息相同。
例如:
名称服务器:
ns.mistral.co.uk 195.184.229.229
所以我需要做的是模式匹配 “名称服务器”,然后显示下一行或下一行,但我无法管理它。
我已经通读了所有关于这里的答案,但是他们要么在我的情况下似乎不起作用,要么让我更加困惑,因为我是一只简单的熊。
我使用的代码如下:
while ($record = <DOMAINS>) {
$domaininfo = whois($record);
if ($domaininfo=~ m/Name servers:(.*?)\n/){
print "Nameserver: $1\n";
}
}
我已经尝试#1的例子,其中
<DOMAINS>;
将采取下一行,但这个并没有为我和我的工作假设这是因为我们已经将这个内容读入$ domaininfo。
编辑:忘了说谢谢! 多粗鲁。
你可以在没有`/ m`的`\ n`上匹配; `/ m`标志*只影响'^`和`$`匹配的内容。 – ysth 2010-12-06 17:05:03
再一次,让我为之前没有回复而道歉。/m工作。我以前曾经使用过很多次,但是忘记了这一点,我对此非常感兴趣;-) – 2010-12-14 15:34:23