我有一个perl脚本在web服务器上,基本上中继一个帖子到另一个URL。它已经工作了好几个月,但现在突然给出了一个错误。它可以在不同的web服务器上工作。我有一个简化的脚本来显示这个问题,尽管我已经编辑了下面的实际目标url和参数。我已经更新了Perl模块,但是没有效果。它总是给出错误信息:
read failed: at /data04/cdc/perl5/lib/perl5/LWP/Protocol/http.pm line 382.
http中的问题行。点是
my $n = $socket->sysread($buf, 1024, length($buf));
unless (defined $n) {
die "read failed: $!" unless $!{EINTR} || $!{EWOULDBLOCK} || $!{EAGAIN};
我不知道如何着手解决这个问题。主机公司只是告诉我这是第三方LWP脚本的问题,他们无法帮助我。 测试脚本:
#!/usr/bin/perl
use LWP::UserAgent;
my $url = 'https://XXXX/YYYY/';
my @lmargs;
push @lmargs, 'p1', 'v1';
push @lmargs, 'p2', 'v2';
my $ua = LWP::UserAgent->new();
my $response = $ua->post( $url, @lmargs);
my $resp = $response->decoded_content();
print "Content-Type: text/htmlnn";
print "<html> <head>n";
print "<title>Hello, world!</title>";
print "</head>n";
print "<body>n";
print "<h1>Test 2</h1>n";
if (! defined $response) { print "<br>No response defined<br>"; }
elsif (! defined $resp) { print "<br>No decoded response defined<br>"; }
else { print "<br>decoded response=$resp<br>"; }
print "</body> </html>n";
exit;
我通过在我们的服务器部分重新安装所有Perl模块来修复它。托管公司和我都不知道为什么这是必要的。在脚本停止工作之前,显然没有更新或维护问题。