为什么Perl(.pl)文件显示文本而不是执行文件?

为什么Perl(.pl)文件显示文本而不是执行文件?,perl,Perl,我试图用perl编写一个简单的程序。但是每当我试图运行我的文件时,它总是显示纯文本,而不是执行它 以下是我正在使用的程序代码: #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<title> PERL CGI</title>\n"; print "<body>"; print "hello perl-cgi!!!!!!!"; print "&

我试图用perl编写一个简单的程序。但是每当我试图运行我的文件时,它总是显示纯文本,而不是执行它

以下是我正在使用的程序代码:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> PERL CGI</title>\n";
print "<body>";
print "hello perl-cgi!!!!!!!";
print "</body>";
print "</html>\n";
#/usr/bin/perl
打印“内容类型:text/html\n\n”;
打印“\n”;
打印“PERL CGI\n”;
打印“”;
打印“hello perl cgi!!!!!!!”;
打印“”;
打印“\n”;

您必须配置web服务器以执行Perl脚本。有几种方法,最简单的是
CGI
,替代方法是
mod_perl
FastCGI
PSGI
。每个方法的配置取决于所使用的HTTP服务器

如果您在Apache2中使用CGI,请确保您的脚本是可执行的(前提是您使用Linux/OSX/other UNIX:
chmod+x hello.pl
),并且包含脚本的目录在Apache配置文件中具有
Options+ExecCGI
指令。通常,为cgi脚本正确设置了
/cgi-bin
目录


有关如何配置HTTP服务器以提供动态内容的信息,请参阅您的HTTP服务器文档。

您似乎正在尝试执行CGI脚本。这个CGI脚本可以是Perl脚本、shell脚本或C/C++程序

因此,您需要设置HTTP服务器,以便每当请求某个目录中的文件时,该文件不会被发回;相反,它是作为一个程序执行的,程序输出的任何内容都会发送回浏览器以供显示。此函数称为通用网关接口或CGI,程序称为CGI脚本

在继续进行CGI编程之前,再次确保您的Web服务器支持CGI,并且已将其配置为处理CGI程序。如果保留在预先配置的目录中,所有CGI程序将由HTTP服务器执行。这个目录称为CGI目录,按照惯例,它被命名为/CGI-bin。按照惯例,PERL CGI文件的扩展名为.CGI

下面是一个简单的链接,它链接到一个名为的CGI脚本。此文件保存在/cgi-bin/目录中,它包含以下内容。在运行CGI程序之前,请确保使用chmod 755 hello.CGI UNIX命令具有文件的
chage
模式

用于此hello.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;
#/usr/bin/perl
打印“内容类型:text/html\r\n\r\n”;
打印“”;
打印“”;
打印“Hello Word-第一个CGI程序”;
打印“”;
打印“”;
打印“你好”字!这是我的第一个CGI程序';
打印“”;
打印“”;
1.

要在具有要执行的编译器的Apache web服务器中运行“.pl”或“.pm”文件,通常应将其放置在
cgi-bin
文件夹中。否则,您应该在
.htaccess
文件或
Apache配置文件中添加以下内容

AddHandler cgi-script .cgi .pl .pm
Options +ExecCGI

在此之后,您应该将该文件的
文件权限设置为
755

您试图使用什么命令运行它?这听起来像是您使用的Web服务器的问题。您的Web服务器支持Perl/CGI呈现吗?或者,您是否为支持Perl/CGI的web服务器安装/加载了必要的模块?我已经安装了internet中提到的所有必需的模块,我对Perl没有太多的知识。。。可能是我做错了什么……世邦线在哪里/usr/bin/perlif如果它不是可执行文件,那么它是如何打印该文件的呢browser@akaElement要打印,它必须是可读的,而不是可执行的。静态文件(普通HTML、图像、CSS)通常不是(不应该)可执行文件,但它们会显示出来。对,我说。除非我们知道正在使用的web服务的详细信息,否则此答案将提供解决问题的必要信息。
这里是一个简单的链接
。。。哪里