Этот код компилирует набор с помощью хэш-ключей уникальных заглушек базового имени в наборе путей.
%stubs = map { $f=basename $_; $f =~ /^([A-Za-z]+[0-9]+)\./ ; $1=>() } @pathlist;
Зачем мне $ f
ссылки здесь? Я думал, что буду в порядке с:
%stubs = map { basename; /^([A-Za-z]+[0-9]+)\./; $1=>() } @pathlist;
Но у меня нет совпадений. Разве мне не разрешено изменять $ _ в блоке карты?
Для тех, кому интересно, что делает код:
Для каждого $ path (@pathlist) это ' s получение базового имени, соответствие первой буквенно-цифровой последовательности, а затем возврат первого совпадения скобок в качестве ключа для пустого значения списка. Пример:
/some/dir/foo123.adfjijoijb
/some/dir/foo123.oibhobihe
/some/dir/bar789.popjpoj
возвращает
foo123 => ()
bar789 => ()
После чего я использую ключи карты как набор значений для обработки.