0

我一直在寻找有关如何从 html 网页运行 perl 程序的教程。我找不到一个教程,甚至找不到一个很好的起点来清楚地解释如何做到这一点......

我想做的是在 perl 中使用 WWW::mechanize 在 wordpress 网站的后端为我填写一些信息。在我能做到这一点之前,我只想看到检索到的 html 显示在浏览器中,就像实际网站将显示在浏览器中一样。这是我的perl:

print "Content-type: text/html\n\n";
use CGI;
use WWW::Mechanize;
my $m = WWW::Mechanize->new();



use WWW::Mechanize;
$url = 'http://www.storagecolumbusohio.com/wp-admin';
$m->post($url);
$m->form_id('loginform');
$m->set_fields('log' => 'username', 'pwd' => 'password');
$page = $m->submit();
$m->add_handler("request_send",  sub { shift->dump; return });
$m->add_handler("response_done", sub { shift->dump; return });
print $page->decoded_content;

这段代码在命令提示符下工作(实际上我在 mac 上,所以是终端)。但是,当用户单击链接时,我希望它可以在网站上工作。

我学到了一些东西,但是因为我是一个 perl 菜鸟,所以这让我感到困惑。似乎有两种方法可以做到这一点(我可能是错的,但这是我从我所阅读的内容中收集到的)。人们一直在谈论的一种方式是使用某种“模板方法”,例如 embperl 或 modperl。另一种是将 perl 程序作为 cgi 脚本运行。从我在各个网站上阅读的内容来看,cgi 似乎是最简单和最常见的解决方案?为了做到这一点,我被告知我需要更改 httpd.conf 文件中的几行。我在哪里可以找到该文件来更改它?我知道我在 apache 服务器上,但我的网站是由 dreamhost 托管的。我仍然可以访问此文件吗?如果可以,如何访问?

任何帮助将不胜感激,因为您可能会说我没有线索并且很困惑。

4

2 回答 2

1

要在 dreamhost 上使用 cgi 脚本,只需

  1. 给脚本一个.cgi扩展名
  2. 将脚本放在网络服务器可见的地方
  3. 赋予脚本正确的权限(至少 0755)

你可能想看看你能不能得到一个玩具脚本,比如说,

#!/usr/bin/perl
print "Content-type: text/plain\n\nHello world\n";

在处理调试较大的脚本之前工作。

也就是说,我在您的脚本中没有看到的是标题。我想你会想说类似的话

print "Content-type: text/html\n\n";

你的另一个print电话之前。

于 2012-08-13T23:00:58.500 回答
0

我建议您首先在本地服务器上测试您的代码。我假设您使用的是 windows 或类似的问题,因此请使用 xamp http://www.apachefriends.org/en/xampp.html或 wamp http://www.wampserver.com/en/或获取真正的操作系统像http://www.debian.org(你也可以在 vm 中运行它)。

您不应该像那样打印内容类型,而是使用“打印标题”,请参阅此页面: http: //perldoc.perl.org/CGI.html#CREATING-A-STANDARD-HTTP-HEADER%3a

确保为 perl 正确配置了 apache 服务器,另请参阅这些常见问题:http: //oreilly.com/openbook/cgi/ch12_01.html

另请参阅如何通过命令行将 POST 和 GET 数据发送到 Perl CGI 脚本?用于在命令行上进行测试。

于 2012-08-14T18:42:50.860 回答