2011-12-18 56 views
0

我沒提取,這可能是既FQDN和簡單的主機名的主機名爲什麼我的Perl正則表達式不符合簡單的主機名?

例如用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

爲什麼不使用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"; 
+0

糟糕的第一次出現。有時事情比你想象的要簡單... 10x – 2011-12-19 06:50:49

5

之所以/^(.*?)\./不匹配是因爲在簡單的主機名不.,所以比賽不會發生。

下面將與兩個工作:

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

    萃取物連續非.字符

+0

我在$ res而不是字符串中得到「1」。我將它替換爲我的($ res)= $ t =〜/(\ w +)/;現在它工作正常。 10倍 – 2011-12-19 06:55:54

相關問題