Что касается html-рендеринга. В 50й версии все html-элементы формируются подпрограммами, прописанными прямо в коде. Общепринятой практикой является использование шаблонов.
Шаблоны я включил и в новый NoDeny. Однако я написал свой движок шаблонов) Хотя название "движок шаблонов" - это слишком громко. Функционал минимален:
- вставка значения
- условия
- вставка файла в шаблон
Однако этого достаточно чтоб сделать довольно навороченные фишки.
С другой стороны я оставил возможность формирования html прямо из кода. Лично для меня это очень удобно. Вот пример:
my $tbl = tbl->new( -row1=>'row4', -row2=>'row5' );
$tbl->add('head','lr','Левая колонка','Правая колонка');
ToLeft $tbl->show;
этим я создал объект таблица с параметрами "четная строка имеет класс row4, нечетная row5", добавил строку с двумя ячейками, причем класс установил 'head' (класс для заголовков таблиц), отрендерил таблицу и поместил ее в область левого меню (команда ToLeft).
Лично для меня такой вариант очень прост т.к. позволяет очень быстро программировать ибо формирование шаблонов занимает больше времени. Тем не менее шаблоны я использую, например для формирования общей структуры документа, формы логина и т.д.