清单 2. AbstractCGI 类:实现特定的 API (CGI)
package AbstractCGI;
sub new {
my $package=shift;
my $self={
_cgi_method=>undef, #simple class data
_query=>undef
};
bless $self, ref $package || $package;
$self->_init;
$self;
}
sub _init {die} #private method
sub get_param {die}
sub is_print_form_mode { shift->get_param('mode') eq 'form' }
sub is_print_entries_mode { shift->get_param('mode') eq 'entries' }
使用 HTML 模板
让我们来看看用 HTML 模板来创建类。留言簿设计式样能存储在一个由脚本处理的普通 HTML 文件中,这样 HTML 编码人员可以对 CGI 一无所知,并能独立于 CGI 开发人员来设计 HTML 页。需要两个 HTML 文件:form.html (“添加输入项”页)以及 view.html (“查看留言簿”页)。
在设计新类之前,让我们来看一下 CPAN。HTML::Template 模块允许在 CGI 脚本中使用 HTML 模板。Sam Tregar (模块的创建者)利用有意思的功能创建了一种有效的工具。模板本身是一个普通 HTML 文件,它含有由脚本处理的额外标签。当页面传递到客户端时,标签被脚本中定义的值所替代。此外,模块部分能根据脚本的值而被排除、包含或重复。这些关于模板的设想对于编写留言簿脚本来说特别有帮助。