Именованный захват буферов в регексах

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.

Statistic

About this Entry

This page contains a single entry by Dinar published on February 20, 2010 6:17 PM.

Find recent content on the main index or look in the archives to find all content.