我一直在寻找有关如何从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 noob而让我感到困惑。似乎有两种方法可以做到这一点(我可能是错的,但这是我从iv'e阅读的内容中收集到的)。人们一直在谈论的一种方式是使用某种“模板方法”,例如embperl或modperl。另一种是将perl程序作为cgi脚本运行。从我在各个网站上看到的内容来看,cgi似乎是最简单和最常见的解决方案?为了做到这一点,我被告知我需要在httpd.conf文件中更改几行。我在哪里可以找到该文件来改变它?我知道我在apache服务器上,但我的网站由dreamhost托管。我仍然可以访问此文件,如果是这样的话?
任何帮助都会非常感激,因为你可能会说我没有线索并且非常困惑。
答案 0 :(得分:1)
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
来电。
答案 1 :(得分:0)
我建议您先在本地服务器上测试代码。 我假设您正在使用Windows或与您的问题类似的内容,因此请使用xamp http://www.apachefriends.org/en/xampp.html或wamp http://www.wampserver.com/en/或获取真实的操作系统http://www.debian.org(您也可以在vm中运行它) 。
您不应该打印这样的内容类型,而是使用“print header”,请参阅此页面: http://perldoc.perl.org/CGI.html#CREATING-A-STANDARD-HTTP-HEADER%3a
确保为perl正确配置了apache服务器,另请参阅这些公共问题: 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?以在命令行上进行测试。