在Perl中,如何将一个正则表达式匹配与变电站中的外部命令的输出相加?

时间:2011-08-11 16:33:11

标签: regex perl

假设我有一个如下所示的IP列表:

10.2.3.4
10.5.3.2
10.5.3.1
...

我知道regex中的'e'选项,它对替换字符串执行eval。我只是想直接替换,我可以这样做:

s/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/`{$1}dig -x $1 +short`/ge;   

但是,我真正想做的是将主机名附加到正则表达式匹配,如下所示:

10.2.3.4 website.example.com
10.5.3.2 dc01.example.com
10.5.3.1 dc02.example.com
...

3 个答案:

答案 0 :(得分:4)

如果你需要做的就是附加,你根本不需要正则表达式。只是做:

chomp($_ .= '  ' . qx(dig -x $_ +short)) for @list;

我不确定你的例子中{$1}是什么。

答案 1 :(得分:1)

s/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/$1.`{$1}dig -x $1 +short`/ge;

答案 2 :(得分:1)

试试这个,它对我有用:

s/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/"$1 ". `dig -x $1 +short`/ge;