Эта строка создает справочную таблицу, в которой для каждого хоста есть тривиальная (1
) запись.
Встроенная map берет список и генерирует выходной списокзапустив код в блоке для каждого элемента, доступного в специальной переменной $_
.Возвращение последнего вычисленного оператора в блоке для каждого элемента, который может быть одним или несколькими скалярами (или ни одного), сведено в список, который в конечном итоге возвращается.
Здесь вы получаете пару для каждого элементасам элемент $_
и 1
(оператор =>
представляет собой ,
, который цитирует его левый операнд).Список четного размера может быть назначен хэшу (словарю), в результате чего последовательные элементы становятся парами ключ-значение.Таким образом, каждый хост (в $_
) становится ключом со значением 1
.
Затем, чтобы исключить элемент, либо отфильтруйте список, заданный для map
, используя grep
my %exclude_hosts =
map { $_ => 1 }
grep { not /^router/ }
split(',', $exclude_hosts || '');
или сделайте это в самом map
my %exclude_hosts =
map { (not /^router/) ? $_ => 1 : () }
split(',', $exclude_hosts || '');
, где пустой список ()
сгладится в возвращаемом списке map
, таким образом исчезнув.
Для получения более подробной информации см. Связанную документацию.