我有以下代码段:
my $hostname = `host \`hostname\``;
这会产生类似的结果:
blahblah.test1234.mydomain.com has address 12.345.67.8910
(我用虚拟值替换了实际值)
从这里开始,我想提取这个,以便$hostname
只有“blahblah.test1234.mydomain.com
”并忘记其余的
这段代码将在不同的服务器上运行,因此其大小可能会有所不同。
我在考虑使用一个正则表达式,该表达式将从该行的开头剪切到mydomain.com
,所以基本上*.mydomain.com
答案 0 :(得分:3)
使用perl自己的gethostbyname
或Net::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);