LWP :: Simple get的结果被截断

时间:2011-12-09 03:47:58

标签: perl

我正在使用perl在网址上执行get请求,结果似乎被截断了。

如果我跑

curl myurl | wc -l

结果是1823,如果我创建以下文件foo.pl:

#!/usr/bin/perl

my $url = 'myurl';

use LWP::Simple;
my $content = get $url;
die "Couldn't get $url" unless defined $content;
print $content;

并运行

./foo.pl | wc -l

结果从1300左右到偶尔变化1823.手动检查输出显示使用perl时输出中断。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:1)

如果你关闭缓冲会怎么样?我也同意Karsten S.检查http标头的错误代码。最后,我还尝试将内容存储到数组中,看看会发生什么。

要关闭缓冲,您只需在$|++语句后在脚本顶部放置use即可。再次,在黑暗中拍摄。

要检查http标头,您可以使用CGI。这是一个小网站,上面有一个关于如何从请求中获取标题的好例子:

http://www.velocityreviews.com/forums/t24118-re-lwp-simple-header-information-problems.html

最后,尝试使用数组@contents来存储来自网络服务器而不是标量$contents的内容。我曾经有过一段时间从Perl误解为列表的远程服务器传递的东西。我不确定LWP::Simple是否考虑了这些时间,但尝试不会有什么坏处。您可能只获得一部分数据,其余部分要么被覆盖,要么被忽略。将数据放入数组可以帮助确定是否发生了这种情况。