Perl 编程/CGI
假设您已经拥有一个 Apache 服务器(或兼容的服务器,可以读取 shebang! 行 - 稍后会详细介绍)和一个正在运行的 Perl 安装,在互联网上运行 Perl 程序相当简单。
首先,您必须有一种访问程序的方法。在这里我们将处理表单数据和提交,因此我们将假设您的 HTML 中的表单代码有一个属性,写着 ACTION="programname.cgi"。
CGI 脚本像任何其他 Perl 程序一样开始,使用“shebang”,类似于
#!/usr/bin/perl
(有关详细信息,请参阅 Perl 编程/第一个程序)
接下来加载 CGI 模块
use CGI;
CGI 模块使我们的工作变得轻松,因为它预先编程了用于互联网使用的函数。然后我们必须创建一个 CGI 处理器 - 可以让我们访问函数的东西。我们用以下代码来实现
my $query = CGI->new();
这意味着变量 $query 正在加载 CGI 标准函数。
现在我们的程序已经使用 CGI 模块设置好了,它应该看起来像这样
#!/usr/bin/perl
use CGI;
my $query = CGI->new();
所以我们有一个程序,它只是什么也不做,实际上会导致服务器错误,因为服务器没有输出,也不知道应该显示什么类型的输出,即使它有一些输出。
在我们告诉服务器如何处理我们的输出之前,我们需要检索我们的输入。为此,我们使用$query我们之前声明的变量。假设我们在表单中有一个名为“Name”的文本框,我们想知道在那里输入了什么。为此,我们在程序中添加以下代码行
my $Name = $query->param('Name');
现在,这行代码介绍了param()函数(用于“参数”)。该param()函数可以为我们执行许多方便的操作,它们都是检索变量的好方法。它处理所有 HTTP 编码,因此我们得到的只是一个干净的变量。另一个需要注意的是,您不需要使用$Name作为您的变量。只记住一个变量的名称,这样更方便。不过,还是使用最适合您的方法。
现在我们必须创建我们的标题信息。CGI 甚至使这变得容易。我们不必记住一大堆 mime 类型声明(您也可以这样做),我们只需要输入
print $query->header();
它就会打印出我们的标题信息。关于标题的一点说明。在括号内,我们可以指定参数,例如要发送给用户浏览器的 cookie。这在以后会非常有用。现在我们只坚持标题。
您需要放入的最后一样东西(虽然程序会运行,但会显示一个空白页面,没有它),是一些输出。让我们简单地让它将用户的姓名显示给他们。这将看起来像这样。
print " You said your name was: $Name";
所以我们现在有一个完整的程序,它处理表单,只用六行代码。Perl 难道不棒吗?最终代码看起来像这样
#!/usr/bin/perl
use CGI;
my $query = new CGI;
my $Name = $query->param('Name');
print $query->header();
print "You said your name was: ", $query->escapeHTML($Name);
从透视的角度来看,我们可以看到$query变量是与 CGI 模块非常重要的连接,因为它告诉 perl 您引用的函数属于 CGI;再次强调,您可以声明任何变量名来代替$query只要您保持一致,虽然您会发现许多开发人员使用$query或$q. 还要注意使用escapeHTML方法来避免任何 HTML 注入 问题。
最后注意:确保您将/usr/bin/perl更改为您的 perl 安装路径(假设不是它),这样 perl 才能正确执行。
有许多 CGI 框架可以帮助完成常见的 CGI 编程任务