Perl主机名正则表达式

时间:2012-03-12 20:37:07

标签: regex perl unix

我有以下代码段:

my $hostname =  `host \`hostname\``;

这会产生类似的结果:

blahblah.test1234.mydomain.com has address 12.345.67.8910(我用虚拟值替换了实际值)

从这里开始,我想提取这个,以便$hostname只有“blahblah.test1234.mydomain.com”并忘记其余的

这段代码将在不同的服务器上运行,因此其大小可能会有所不同。

我在考虑使用一个正则表达式,该表达式将从该行的开头剪切到mydomain.com,所以基本上*.mydomain.com

3 个答案:

答案 0 :(得分:3)

使用perl自己的gethostbynameNet::DNS::Resolver而不是炮轰命令行程序可能会更好。

答案 1 :(得分:2)

只需使用核心模块Sys::Hostname

perl -MSys::Hostname -le 'print hostname'

答案 2 :(得分:0)

如果您可以保证只想在第一个空格之前保留任何内容,请尝试以下操作:

$hostname =~ s/(.*?)\s+.*/\1/;

以下内容将产生'blahblah.test1234.mydomain.com':

$hostname = "blahblah.test1234.mydomain.com has address 12.345.67.8910";
$hostname =~ s/(.*?)\s+.*/\1/;
print($hostname);
相关问题