在Perl脚本中(使用Ubuntu)我想做类似
的事情 use Blah;
...
...
my $response =
&Blah::Fetch($URL, {'method'=>'POST', 'parameters' => \%params});
我为了方便而编写的看起来很像Prototype.js ajax调用,但显然我们使用的是Perl而不是Javascript,我们在服务器上而不是浏览器,并且调用者想要阻止直到我们从远程服务器获得答案或超时。如果出现服务器或超时错误,则定义的($ response)应为false。如果有一种获取HTTP状态的方法很好,但知道请求失败就足够了。它应该可以执行GET或POST。
我知道我可以通过使用system和wget来做到这一点,但这是一个kludge。
在Perl中执行此任务的最佳方法是什么?
是否有一个很好又整洁的Perl界面?
答案 0 :(得分:4)
您可以使用HTTP :: Request
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->timeout(3);
my $req = (POST 'http://stackoverflow.com',
["param1" => $var1,
"param2" => $var2]);
$response = $ua->request($req);
$content = $response->content;
exit;
有关回复元素,请参阅此处:http://kobesearch.cpan.org/htdocs/libwww-perl/HTTP/Request.html
答案 1 :(得分:4)
事实上的方法与LWP和WWW:Mechanize一起传递请求。这些库通常包含在Perl包中,但也可以通过CPAN获得。 CGI.pm是处理大多数简单Web请求的最基本模块。
两者的教程很常见,请尝试http://perl.com/,http://PerlMonks.org/ http://perldoc.perl.org/等。如果您的需求是基本的,LWP还提供LWP :: Simple。