1
4
您应该始终在输出的末尾打印出\n \n“,以告诉Web服务器输出已完成。成功终止脚本后,Apache可能会为您执行此操作。 如果脚本完成了,您应该在技术上使用适当的退出状态调用“exit”——成功为零,错误为非零。Web服务器检查退出状态并呈现适当的页面(如果退出状态显示除成功以外的任何内容,则通常会显示错误代码500)。如果不指定“返回”值或直接调用exit,Perl(在本例中)将假定成功终止,并且Web服务器将把CGI脚本视为与调用“exit(0)”相同。 这都在CGI规范中描述(RFC3875是当前的,IIRC)。 |
2
3
我想这更多的是关于编码风格而不是功能性的问题。 如果您有一个简单、简单的程序,没有分支,那么就没有理由用任何特殊的方法来标记程序的终止:
但是,如果结构更复杂,我建议 作记号 终止点由某个特定的东西表示,向阅读您的代码的人发出这样的信号:对于定义的一组条件,不再需要考虑这些条件。 我会用 出口 而不是 返回 ,原因很简单,返回可能被误认为是Sub的结尾,而exit非常明确地声明程序 终止 在这一点上。 |
3
1
不,没关系。我总是让脚本自行终止,而不是“return;”或“exit;”,因为这两个语句(即Perl文档的末尾)都不需要,而且它与“exit;”或“exit 0;”是相同的。 |
4
1
我建议返回而不是退出,这样如果您切换到cgi::fast,您就可以将其转换为Sub。 |
5
0
如果它是一个独立的东西,你不必返回或退出,这是有意义的。但如果这段代码来自函数内部呢?它仍然适用吗?出于某种原因,返回还是退出?它还只是样式吗? |
6
0
要回答您的“更新”问题:在我当前的应用程序中,我使用常见的方法执行以下操作:
如果你有冒险精神,你可以
hook
这不是我现在要做的,如果我必须要做的话:我会更多地依赖一些中间层,比如Catalyst,它可以让我快速地向上移动到mod euperl或者回到cgi。或者更好的是,从头开始编写应用程序以使用更多的Ajax——这样,我的大部分“操作”都是由非常小的Perl脚本执行的,这些脚本只处理输入并在
|
Mustaghees · 烧瓶会话值未在共享主机上持久化 6 年前 |
JMac · 从一个Perl脚本调用另一个Perl脚本,传递CGI参数 7 年前 |
Stephen Harris · 如何告诉现代浏览器在到达时显示行 7 年前 |
Gradient · CGI脚本如何解码多部分/表单数据 7 年前 |