2010-03-31 48 views
0

我有一個hosts文件看起來像這樣:Perl和hosts文件映射問題?

10.10.10.1 myserver1 myserver1alias 

10.10.10.2 myserver2 myserver2alias

我在尋找用perl在myserver1一個參數傳遞,並有辦法將其返回myserver1alias,同樣的,如果我通過在myserver2它應該返回myserver2alias。有什麼建議麼?

回答

0

的快速和骯髒的方式是:

perl -nE 'say $1 if /myserver1\s+(\w+)$/' path/to/hostfile 

您可能需要做一些類似這樣不時查詢,那麼你很可能使代碼可重用塊來爲你做這個。例如:

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.10; 

use HostFileParser; 

my $host = HostFileParser->parse("path/to/hostfile") 

my $server = $host->find(server => "myserver1") 

say $server->alias; 

當然,我不打算「給你所有的codez」。 ;)

(這些答案假設Perl的5.10,但如果你沒有它的變化只是say $x =>print "$x\n",或sub say { print "@_\n" }

0
while(<>){ 
if (/myserver1/){ 
    @s = split /myserver1/,$_,2; 
    print $s[-1]; 
} 
} 
1

在命令行:

$ perl -lane 'print $F[-1] if $F[1] eq "myserver1"' /etc/hosts