繁体   English   中英

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

[英]What is the difference between perl as a language and CGI scripts?

我正在学习Perl并试图理解Perl和CGI之间的区别。 我从这个网站上找到了一些定义,

“可以设置HTTP服务器,以便每当请求某个目录中的文件时不发回该文件;而是将其作为程序执行,并将该程序输出的任何内容发回以供浏览器显示。此功能称为通用网关接口或CGI,程序称为CGI脚本。“

所以我的问题是,不仅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是一种标准方法或接口 - 通用网关接口 ” - 用于与Web服务器通信并为客户端请求动态生成网页的应用程序。

您的应用程序可能具有.cgi扩展名的事实主要取决于您的Web服务器配置。 应用程序可以具有.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和CGI之间的关系经常被混淆,主要是因为它们经常被一起看到。 实际上,这经常发生在“Perl CGI”这个术语变得司空见惯的情况下。 实际上,任何数量的编程语言都可以与通用网关接口一起使用。 另外,Perl通过cgi-bin运行,暗示了一种关系。 如果这还不够,文件扩展名通常也是.cgi。

CGI是一种标准,它通过(CGI)脚本在Web服务器(如Apache)和客户端之间提供接口,该脚本可以用任何编程语言编写。 但是,经常使用脚本语言。 CGI脚本接受来自客户端的请求,并将调用适当的函数将结果返回给请求的客户端。 有许多语言可以用作CGI语言,如Perl,C,C ++,Tcl,Unix Shell Script等。但是,Perl毫无疑问是CGI脚本最常用的语言。

虽然PHP语言肯定超越了Perl作为服务器端语言的选择(在它们之间,而不是Java或ASP),PHP本身就是用C编程语言编写的一组通用网关接口(CGI)二进制文件。 1994年,取代他用来维护个人主页的一小部分Perl脚本。 今天,您会发现几乎每个Web托管控制面板中都内置了CGI Script和PHP功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM