昨日、/ 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
ですか?私がそれを書かないならば、全体の行を取り戻してください。変数はその値に評価されますか?