Использование локальной переменной блока карты Perl

Этот код компилирует набор с помощью хэш-ключей уникальных заглушек базового имени в наборе путей.

%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 => ()

После чего я использую ключи карты как набор значений для обработки.

5
задан Phil H 19 May 2011 в 07:19
поделиться