0

我无法提取可能既是 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 尝试了不同的组合,但它不起作用,为什么?

4

2 回答 2

5

/^(.*?)\./不匹配的原因是因为.简单主机名中没有,所以匹配永远不会发生。

以下将适用于两者:

  • my ($res) = $t =~ /([^.])+/;

    提取第一次出现的连续非.字符

于 2011-12-18T17:43:39.173 回答
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";
于 2011-12-18T16:18:07.433 回答