Оставляя пока вопрос CGI против MVC Framework, вам понадобится один из выходных шаблонных модулей из CPAN.
Template Toolkit очень популярен (Template.pm на CPAN)
Также популярны Text :: Template, HTML :: Template и HTML :: Mason.
HTML :: Mason - это гораздо больше, чем шаблонный модуль, и поэтому он может быть слишком тяжелым для простого CGI-приложения, но стоит немного подумать, пока вы решаете, какой из них лучше для вас.
Text :: Template достаточно прост и использует Perl внутри шаблонов, так что вы можете зацикливаться на данных и выполнять логику отображения в Perl. Люди воспринимают это как за и против.
HTML :: Шаблон также маленький и простой. Он реализует свой собственный небольшой набор тегов для обработки if / then / else, установки переменных и зацикливания. Вот и все. Это рассматривается как "за" и "против" по совершенно противоположным причинам, как Text :: Template.
Template Toolkit (TT) реализует очень большой, изящный язык шаблонов, который включает в себя циклы, логику и многое другое.
Я использовал HTML :: Template one и обнаружил, что мне нужно еще несколько функций. Затем я с успехом использовал Text :: Template, но мне показалось, что его желание работать с пространствами имен немного раздражает. Я узнал и полюбил Template Toolkit. Для меня это просто кажется правильным.
Ваш пробег может отличаться.
Конечно, все еще существует старый метод "print HTML", иногда достаточно нескольких операторов print. Но вы натолкнулись на идею отделения вашего дисплея от основной логики. Что хорошо.
Это первый шаг на пути к модели / представлению / контроллеру (MVC), в котором вы разделяете модель данных и бизнес-логику (ваш код принимает входные данные, что-то с ними делает и решает, что нужно выводить) ваш ввод / вывод (шаблоны или операторы печати - HTML, PDF и т. д.), а также код, который их соединяет (CGI, CGI :: Application, Catalyst MVC Framework и т. д.). Идея заключается в том, что изменение структуры данных (в модели) не должно требовать изменений в ваших выходных процедурах (представление).