从网页运行perl cgi脚本(html)

时间:2012-08-13 20:56:27

标签: html perl cgi dreamhost

我一直在寻找有关如何从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托管。我仍然可以访问此文件,如果是这样的话?

任何帮助都会非常感激,因为你可能会说我没有线索并且非常困惑。

2 个答案:

答案 0 :(得分:1)

To use a cgi script on dreamhost

就足够了
  1. 为脚本提供.cgi扩展名
  2. 将脚本放在网络服务器可见的位置
  3. 为脚本提供正确的权限(至少为0755)
  4. 您可能想知道是否可以获得玩具脚本,比如说,

    #!/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?以在命令行上进行测试。