Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
zDenis 04.03.2003 01:51
Собственно, хотел вопрос задать, но пока писал, почитал доку по Перлу и вопрос разрешился, но написать все таки хочу, в назидание, так сказать, потомкам.... <parser>какой_то_метод[]</parser>ля-ля-тополя... очень много всякого текста... <parser>другой_метод[]</parser>. ...Захотели отматчить ее так, чтобы содержимое тега <parser></parser> отпроцессилось в @postprocess'е
@postprocess[buffer] $result[^buffer.match[<parser>(.+)</parser>][ig]{^process{^^$match.1}}]не пойдет, потому что рег. выражения по умолчанию жадные, и результатом такого постпроцесса будет выполнение всего кода между первым <parser> и последним (в данном случае вторым) </parser>, включая текст "ля-ля-тополя...очень много всякого текста..." чего мы не хотели.
@postprocess[buffer] $result[^buffer.match[<parser>(.+?)</parser>][ig]{^process{^^$match.1}}]Тогда этот match найдет два вхождения шаблона и выполнит код между парными <parser> и </parser>, как и задумывалось.
... <title><parser>^site.get_page_title[]</parser></title> ...В процессе обработки кода срабатывает метод
^site.set_page_title[Новость про епрст от 5 марта сего года]И теперь с помощью нашего match'а в методе @postprocess мы и запускаем метод, вставляющий название страницы в html-код.
<parser>какой_то_блин_понимаешь_метод[]</parser>использовать
<parser какой_то_блин_понимаешь_метод[]>, так как если что не заматчится, пользователь не увидит непонятных ему слов (имя метода) на экране: