1

有几种方法,一个cgi脚本可以输出html。其中一个是将 html 代码打印为字符串或此处的文档,另一个是创建一个 cgi 对象并使用 cgi.pm 方法。

我现在的问题是,它们之间有什么区别吗?有没有办法将它们结合起来?例如,我需要使用 cgi.pm 方法实现 recaptcha,并想在我的打印语句之间添加 cgi.pm 代码块?这是可能的还是我错过了什么?

对我来说,cgi.pm 似乎只支持创建基本的 html 元素,但不支持创建那些经常用于复杂网页设计的元素。

4

2 回答 2

2

use实际上,您可以通过在语句中给出标签的名称来使 CGI,pm 打印出您想要的任何标签(甚至是它不支持的标签或您自己编造的标签) 。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

# Import standard functions, and add a madeuptag() function.
use CGI qw[:standard madeuptag];

say madeuptag("here it is"); # <madeuptag>here it is</madeuptag>

但是,使用 HTML 生成函数是一个非常糟糕的主意。将原始 HTML 放入代码中的字符串是一个更糟糕的主意。建议您使用某种模板系统会更好 - 我会推荐Template Toolkit

哦,为了实现 reCAPTCHA,我推荐Captcha::reCAPTCHA

于 2013-09-11T09:36:31.057 回答
-1

当您想用换行符 \n 字符等逐行、逐个打印出某些关键标签时,CGI.pm 会很有帮助。

您可以使用 HTML::Template 之类的东西:http: //metacpan.org/pod/HTML ::Template

这对于包含许多您想要替换的变量的整个 html 文件来说是很好的。

有几个选项,但是对于像 recaptcha 和替换一些变量,我建议一个简单的 qq print 语句:

print qq~<p><span><a href="~; print $link; $count++; 
print qq|">Title</a>
  </span>
</p>\n|;

希望这可以帮助

于 2013-09-11T05:27:49.197 回答