Програмування на perl
Однією з частих завдань, що стоять перед Web-програмістом є відділення логіки отримання даних від формату представлення даних. Для вирішення такого завдання часто використовують шаблони html-документів, які при роботі програм заповнюються даними. Це дозволяє виконувати верстку сторінок іншій людині, або змінювати зовнішній вигляд сторінок не змінюючи саму програму.
CPAN надає програмісту вибір різних засобів роботи з шаблонами. Серед них: HTML :: Template. Text :: Template. Template toolkit. Як правило методика роботи з усіма цими модулями однакова. Програміст створює об'єкт, який вказує на потрібний шаблон, потім формується набір даних, для заповнення шаблону і виконується саме заповнення шаблону, а результат цього повертається у вигляді готової HTML сторінки. Давайте докладніше розглянемо модуль HTML :: Template.
HTML :: Template також дозволяє програмісту контролювати роботу з шаблонами. Наприклад, при використанні даного модуля в поєднанні з mod_perl можна використовувати кешування розібраних шаблонів і використовувати результати в різних скриптах. Крім кешування програміст може задати фільтри, які будуть проводити обробку згенерованого тексту. Всі параметри шаблонів задаються при створенні об'єкта, що описує шаблон.
створення об'єкта
Ось приклад створення об'єкту з шаблону що знаходиться в файлі template.tmpl. при цьому задається, що імена шаблонів будуть чутливі до регістру букв:
Якщо в системі встановлена змінна оточення $ HTML_TEMPLATE_ROOT. і при шаблон заданий відносним ім'ям файлу, то до імені буде додано значення $ HTML_TEMPLATE_ROOT.
отримання результату
Для отримання заповненого шаблону просто викличте функцію output для потрібного об'єкту. При цьому повертається згенерований текст. При цьому стан об'єкта шаблону не змінюється.
Оскільки дуже часто результат роботи записується в файл, то для того, щоб зменшити завантаження, ви за допомогою параметра print_to можете передати функції output дескриптор файлу, в який буде відбуватися видача результатів. Наприклад, ось так:
вставка змінних
Для вставки даних в шаблон необхідно заповнити його за допомогою функції param. Функції param передається хеш даних у вигляді ключ => значення. Для складних структур даних, наприклад для вкладених циклів, значенням можуть бути посилання на списки і інші хеш-кодування. Ось приклад простого використання модуля:
Для використання в шаблоні змінної з ім'ям VARNAME використовується конструкція .
Обробка виведених змінних може контролюватися параметром тега з ім'ям ESCAPE. Допустимими значеннями є HTML і URL. при цьому відбувається перетворення символів, не дозволених в даному контексті.
умовні оператори
Інший часто респонденти користуються послугами конструкцією є умова. Воно має форму
Протилежних за дією тегом
Функція param може бути використана також для отримання значення зазначеного параметра. Для цього просто викличте функцію з ім'ям потрібного параметра.
оператор циклу
Важливим тегом є тег, що позначає цикл. Він має следущий синтаксис:
Якщо ми в нашому шаблоні напишемо наприклад таку конструкцію
в скрипті заповнимо цей шаблон даними:
то ми отримаємо наступний висновок (тільки генерується частина шаблону):
Важливо пам'ятати, що всередині циклу видно тільки використовувані в ньому змінні. Для того, щоб посилатися на зовнішні (по відношенню до циклу) змінні, ви повинні використовувати параметр global_vars при створенні об'єкта.
інші оператори
Модуль також дозволяє включати в шаблон інші шаблони, що допомагає використовувати повторювані частини в різних документах. Для включення файлу filename.tmpl використовується конструкція
висновок
Більш детальну інформацію про налаштування параметрів виведення результатів і функціях дивіться сторінку підручника HTML :: Template.
Про інших модулях роботи з шаблонами ми розповімо в наступних випусках. Файли з прикладами коду можна завантажити у вигляді ZIP-архіву.