Tie::Hash::NamedCapture - Модуль для создания хэшей связанных с именованными буферами в регулярных выражениях
tie my %hash, "Tie::Hash::NamedCapture"; # %hash ведет себя как %+ tie my %hash, "Tie::Hash::NamedCapture", all => 1; # %hash теперь имеет доступ к буферам из регекса в $qr как и %-
Этот модуль используется для реализации специальных хэшей % +
и %-
, но
он может быть использован для связывания и других переменных по вашему
желанию.
Если включен параметр all
, связанные хэши будут содержать элементы
в виде массива ссылок к содержимому каждого захваченного буфера, чьё имя
соответствует одному из имен элементов хэша. Если ни один из этих буферов
не участвовал при поиске по шаблону, соответствующий элемент хэша будет
содержать массив значений undef
, кол-во которых будет совпадать с
числом буферов с этим именем. Другими словами, связанные хэши будут вести
себя как %-
.
--EN-- When the C<all> parameter is provided, then the tied hash elements will be array refs listing the contents of each capture buffer whose name is the same as the associated hash key. If none of these buffers were involved in the match, the contents of that array ref will be as many C<undef> values as there are capture buffers with that name. In other words, the tied hash will behave as C<%->.
Если параметр all
не указан или установлен в ложное значение, тогда
элементы связанного хэша будут содержать самые левые определенные буферы
ассоциативные с ключами хэша. Иными словами, связанный хэш будет вести
себя как %+
.
--EN-- When the C<all> parameter is omitted or false, then the tied hash elements will be the contents of the leftmost defined buffer with the name of the associated hash key. In other words, the tied hash will behave as C<%+>.
Ключи %-
- как хэши соответствуют всем именам буферов, фигурирующих в
регулярном выражении; ключи %+
- как хэши массивов, только с именами
буферов, которые были захвачены (и таким образом связаны с определенными
значениями)
--EN-- The keys of C<%->-like hashes correspond to all buffer names found in the regular expression; the keys of C<%+>-like hashes list only the names of buffers that have captured (and that are thus associated to defined values).
perlreapi, re, Модули прагм, "%+" in perlvar, "%-" in perlvar.