昨天我写了一个小子程序来解析我的/etc/hosts文件并从中获取主机名。
这是子程序:
sub getnames {
my ($faculty, $hostfile) = @_;
open my $hosts ,'<', $hostfile;
my @allhosts = <$hosts>;
my $criteria = "mgmt." . $faculty;
my @hosts = map {my ($ip, $name) = split; $name} grep {/$criteria/} @allhosts; # <-this line is the question
return @hosts;
}
我称它为并取回与正则表达式getnames('foo','/etc/hosts')
匹配的主机名。mgmt.foo
问题是,为什么我必须在表达式$name
中单独写?map
如果我不写它,请收回整行。变量是否计算为其值?