perl - perl 作为一种语言和 CGI​​ 脚本有什么区别?

标签 perl cgi

我正在学习 Perl 并试图了解 Perl 和 CGI​​ 之间的区别。我从 this website 中找到了一些定义它说,

"It is possible to set up the HTTP server so that whenever a file in a certain directory is requested that file is not sent back; instead it is executed as a program, and whatever that program outputs is sent back for your browser to display. This function is called the Common Gateway Interface or CGI and the programs are called CGI scripts."



所以我的问题是,不仅 CGI 脚本将作为执行文件发送,所有其他服务器脚本语言都将从 HTTP 服务器作为执行文件发送。那么,CGI 的主要目的是什么?

我急切地想知道答案,因为我真的很困惑。这个问题可能很愚蠢,但我需要知道答案。

例如:
#!/usr/bin/perl

print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '<title>Hello Word - First CGI Program</title>';
print '</head>';
print '<body>';
print '<h2>Hello Word! This is my first CGI program</h2>';
print '</body>';
print '</html>';

1;

如果我将它保存在 .pl 中和 .cgi扩展并运行这两个程序,我得到相同的输出。那么cgi脚本和perl有什么区别呢?

最佳答案

CGI 是一种标准方法或接口(interface)——即“Common Gateway Interface”——用于应用程序与 Web 服务器通信并为客户端请求动态生成网页。

您的应用程序可能具有 .cgi 的事实扩展主要取决于您的网络服务器配置。应用程序可能有 .php.pl扩展并配置为使用 CGI 方法与您的 Web 服务器一起运行。虽然 .cgi在某种程度上混淆了编写脚本的语言,十多年来该语言最常见的是 perl。事实上,perl 包含了 CGI 库,以便于在 perl 中编写 CGI 应用程序。如果您从命令行而不是通过 Web 服务器运行应用程序,那么解释器将出现在您的 *.cgi 中。脚本,如果是 perl CGI 应用程序,则类似于:#!/usr/local/bin/perl .由于 CGI 相对简单,CGI 应用程序已经用许多语言编写——甚至是 $SHELL。脚本。

CGI 在很大程度上已被进程内方法或以特定语言编写的完整 HTTP 服务器应用程序堆栈所取代(有时在代理服务器“后面”或 Web 服务器进程“内部”运行),主要是因为这些方法提供了改进的安全性和性能。在 perl 世界中,应用程序框架如 Plack 是这种更现代的动态 Web 应用程序方法的一部分。 Plack 甚至包括 Plack::App::WrapCGI 它可以“更新”您的 CGI 应用程序以在 Plack 框架内运行。

希望有帮助。

关于perl - perl 作为一种语言和 CGI​​ 脚本有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928769/

相关文章:

arrays - 这是 CPAN Uniq 模块中的错误吗?

c - 我的 C ping 脚本安全吗?

perl - 如何使用 HTML 表单将数组传递给 perl cgi 脚本?

bash - 如何在CGI shell脚本中制作Uploader

python - 在 IIS 5.1 上设置 Python

perl - 如何使用 sleep 暂停循环的每次迭代?

regex - 在 Ruby 中是否有与 String.scan 等效的 Perl?

perl - Bash/shell 错误运行 perl -e 'use [module]' : Can't find string terminator "' "anywhere before EOF at -e line 1

perl - 如何在 Perl XS 代码中使用伪文件句柄?

python 简单的 wsgi 文件上传脚本 - 有什么问题?