有人可以向我解释让perl在服务器上工作的基本知识。我需要服务器上的模块吗?如果是这样的话呢?我如何命名我的文件以及它们去了哪里?
根据我的理解,你需要一个模块,它进入cgi-bin。我无法得到一个明确的答案,我是否命名文件.pl或.cgi,当我把它放在cgi-bin中时,我收到服务器错误。我的权限也设置为777,所以这不应该是问题。
请帮忙!我只想了解如何使基本程序正常工作,如下所示。提前谢谢!
#!/usr/bin/perl
require("cgi-lib.pl");
print &PrintHeader;
print "<html>";
print "<head><title>Hello world!</title></head>";
print "<body>";
print "<p>Hello world!</p>";
print "</body>";
print "</html>";
答案 0 :(得分:9)
cgi-lib.pl
的最新版本日期为1999年,并且已经过时了。我建议您使用CGI
库,它几乎必须已经安装在您的服务器上并且保持最新(最近一次是2012年8月16日)
您的程序应如下所示:
#!/usr/bin/perl --
use strict;
use warnings;
use CGI ':standard';
print header;
print <<END;
<html>
<head><title>Hello world!</title></head>
<body>
<p>Hello world!</p>
</body>
</html>
END
另请注意,您可以从命令行运行该程序,以查看它是否编译以及它生成的输出。一旦你在那里工作,你可以将它移动到服务器
答案 1 :(得分:2)
您遇到的问题是您可能在Windows计算机上编辑了源文件,该计算机在每个换行符之前插入CR
个字符。确保您的代码不包含任何CR或将第一行更改为:
#!/usr/bin/perl --
(两条破折号和行尾的空格)
答案 2 :(得分:0)
我同意Dave Cross的评论,你需要告诉你的学校他们教你不正确。我们在Perl的土地上试图让人们停止使用CGI模块,而你正在使用它的前身!
这是一个现代Perl框架中的hello world应用程序,Mojolicious:
#!/usr/bin/env perl
use Mojolicious::Lite;
get '/' => 'hello';
app->start;
__DATA__
@@ hello.html.ep
<html>
<head><title>Hello world!</title></head>
<body>
<p>Hello world!</p>
</body>
</html>
放入文件中,(比如说test.pl
)。通过运行安装Mojolicious:
curl get.mojolicio.us | sh
然后运行
启动您的应用perl test.pl daemon
现在您可以在浏览器中访问http://localhost:3000
以查看结果,不需要Apache,也不需要cgi-bin!
一个更有趣的例子是一个带有默认值的“参数”:
#!/usr/bin/env perl
use Mojolicious::Lite;
get '/:name' => { name => 'world' } => 'hello';
app->start;
__DATA__
@@ hello.html.ep
<html>
<head><title>Hello <%= $name %>!</title></head>
<body>
<p>Hello <%= $name %>!</p>
</body>
</html>
运行此操作并尝试访问http://localhost:3000/SilverNightaFall
并查看其功能!
将动态值插入HTML的过程称为模板,现在更受欢迎(相对于每个请求生成整个HTML)。