Perl和hosts文件映射问题?

时间:2010-03-31 04:12:13

标签: perl

我有一个hosts文件,如下所示:

10.10.10.1 myserver1 myserver1alias

10.10.10.2 myserver2 myserver2alias

我正在寻找一种方法,使用perl传递myserver1的参数并让它返回myserver1alias,同样如果我传入myserver2它应该返回myserver2alias }。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

从命令行:

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

答案 1 :(得分: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;

当然,我不会为所有这些“给你一个代码”。 ;)

(这些答案假定为Perl 5.10,但如果您没有,则更改只是say $x => print "$x\n"sub say { print "@_\n" }。)

答案 2 :(得分:0)

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