Perl 我应该使用面向功能的还是面向对象的CGI接口?

Perl 我应该使用面向功能的还是面向对象的CGI接口?,perl,cgi,Perl,Cgi,我最近一直在学习CGI模块,我正在使用的这本书显示,有两种方法可以使用CGI,面向函数或面向对象。他们说,面向对象的好处只是能够创建两个CGI对象。首先,这是真的,还有其他好处吗?其次,使用两个CGI对象有什么例子?我想我已经找到了问题的答案 通过阅读常见问题解答,我可以存储CGI并加载以前的CGI对象,这是一个非常有用的例子。除了您提到的优点之外,我还要指出,CGI.pm的OOP用法比功能版本更易于阅读(至少对我而言)和管理 我还怀疑它更常见,因此在您之后(包括六个月后)必须维护您的代码的人

我最近一直在学习CGI模块,我正在使用的这本书显示,有两种方法可以使用CGI,面向函数或面向对象。他们说,面向对象的好处只是能够创建两个CGI对象。首先,这是真的,还有其他好处吗?其次,使用两个CGI对象有什么例子?

我想我已经找到了问题的答案


通过阅读常见问题解答,我可以存储CGI并加载以前的CGI对象,这是一个非常有用的例子。

除了您提到的优点之外,我还要指出,CGI.pm的OOP用法比功能版本更易于阅读(至少对我而言)和管理


我还怀疑它更常见,因此在您之后(包括六个月后)必须维护您的代码的人会发现维护起来更容易。

当我需要编写一个非常简单的CGI脚本时,我使用CGI模块的OO接口

我使用OOP接口是因为标准的命令式接口导入了大量可能与我自己的符号冲突的符号。我不喜欢这样,所以我总是阻止符号输入。我不使用CGI。相反,我
使用CGI()

我还将使用限制为生成标头和解析参数。我总是以HTML的形式生成HTML,或者更好,使用TemplateToolkit之类的模板模块

我严格避免使用CGI的HTML生成函数。为什么?

  • 我(和其他许多人一样)已经知道HTML,我认为学习CGI的伪HTML界面没有任何好处
  • 当脚本长大并需要在另一个环境中使用时,提取HTML块或模板并重用它们会更容易

不要把我写的解释为对CGI.pm的全面谴责。CGI.pm有很多值得喜爱的地方。它正确地生成内容类型。这使得参数解析变得微不足道。它是一个核心模块。它使命令行调试和测试变得容易。

您是指一般情况,还是指特定的模块?@Philip Potter CPAN CGI moduleCGI.pm对于web编程来说是非常低级的。你可以选择很多,为你处理棘手的事情。菲利普·波特有一个很好的观点。也就是说,我目前正在一个个人项目中使用CGI.pm。两个接口都使用CGI对象。功能接口只使用一个隐藏对象。