我无法提取主机名,该主机名可能是FQDN和简单主机名
例如,使用sed可以正常工作:
echo test_serv1.TEST-Site-1.test.com|sed 's/\..*//'
test_serv1
echo test_serv1|sed 's/\..*//'
test_serv1
但在Perl中我只得到它的FQDN:
my $t='test_serv1.TEST-Site-1.test.com';
my ($res) = $t=~ /^(.*?)\./;
print "$res\n";
我为test_serv1尝试了不同的组合,但它不起作用,为什么?
答案 0 :(得分:5)
/^(.*?)\./
不匹配的原因是因为简单主机名中没有.
,所以匹配永远不会发生。
以下内容适用于:
<强> my ($res) = $t =~ /([^.])+/;
强>
提取第一次出现的连续非.
字符
答案 1 :(得分:4)
为什么不为perl使用相同的方法?
use strict;
use warnings;
my $t='test_serv1.TEST-Site-1.test.com';
$t =~ s/\..*//;
print "$t\n";
$t='test_serv1';
$t =~ s/\..*//;
print "$t\n";