我一直在寻找关于如何从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新手。似乎有两种方法可以做到这一点(我可能是错的,但这是我从iv'e读到的东西)。人们一直在谈论的一种方式是使用某种“模板方法”,如embperl或modperl。另一种方法是将perl程序作为cgi脚本运行。根据我在不同网站上看到的,cgi似乎是最简单和最常见的解决方案?为此,我被告知需要修改httpd.conf文件中的几行代码。我在哪里可以找到那个文件来修改它?我知道我在apache服务器上,但我的网站是由dreamhost托管的。我仍然可以访问此文件吗?如果可以,如何访问?
任何帮助都会非常感谢,因为你可能会知道我没有任何线索,并且非常困惑。
发布于 2012-08-14 07:00:59
To use a cgi script on dreamhost,这就足以
.cgi扩展名你可能想看看你是否能得到一个玩具脚本,比如说,
#!/usr/bin/perl
print "Content-type: text/plain\n\nHello world\n";在你调试你的大脚本之前先工作。
也就是说,我在你的脚本中看不到的是标题。我想你会想说这样的话
print "Content-type: text/html\n\n";在你调用另一个print之前。
发布于 2012-08-15 02:42:51
我建议您首先在本地服务器上测试代码。我假设你在回答问题时使用的是windows或类似的系统,所以可以使用xamp http://www.apachefriends.org/en/xampp.html或wamp http://www.wampserver.com/en/,或者使用像http://www.debian.org这样的真正的操作系统(你也可以在虚拟机上运行它)。
您不应该像那样打印内容类型,而是使用"print header",请参阅此页面:http://perldoc.perl.org/CGI.html#CREATING-A-STANDARD-HTTP-HEADER%3a
确保您的apache服务器针对perl进行了正确的配置,另请参阅以下常见问题:http://oreilly.com/openbook/cgi/ch12_01.html
另请参阅在命令行上进行测试的How can I send POST and GET data to a Perl CGI script via the command line?。
https://stackoverflow.com/questions/11942178
复制相似问题