Чтобы ответить на ваш «обновленный» вопрос: в моем текущем приложении я использую общие методы, чтобы сделать что-то вроде этого:
# UI.pm
package UI;
sub top { print "<html><head><title>$_[0]</title><body>"; }
sub bottom { print "</body></html"; }
# All the individual .cgi files
package main;
UI::top('Welcome to my page');
print "<p>Welcome to my page!</p>";
UI::bottom();
Если вы чувствуете себя авантюрным, вы могли бы зацепить BEGIN
и END
, чтобы сделать это автоматически, но я бы не стал - я думаю, что было бы слишком много возиться для довольно незначительное преимущество.
Это не то, как я бы сделал это сейчас, если бы мне пришлось делать все это заново: я бы больше полагался на какой-то средний слой, такой как Catalyst, который позволил бы мне быстро перейти к mod_perl или вернуться к CGI. Или, что еще лучше, напишите мое приложение с нуля, чтобы использовать больше AJAX - таким образом, большинство моих «действий» выполняются очень маленькими скриптами Perl, которые просто обрабатывают ввод и отвечают на приложение Javascript в text/plain
или text/json
.