为什么用Perl的LWP下载我的图像会给我一个错误大小的文件?

时间:2009-05-29 15:01:25

标签: perl image lwp

我正在尝试使用Perl从HTTP服务器获取图像。

我有该文件的完整网址,并尝试使用

my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
print FH $data;
close (FH);

现在,从逻辑上讲,至少对我来说,这应该有效。但文件的大小略有不同,我无法解释原因。

帮助!

2 个答案:

答案 0 :(得分:14)

您需要使用binmode将图像数据正确写入磁盘。

my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
binmode (FH);
print FH $data;
close (FH);

否则将其解释为文本,并且新行会被解除。

答案 1 :(得分:13)

Dave是对的,您应该/必须将文件句柄设置为二进制模式。但你可以一气呵成:

LWP::Simple::getstore( $params{URL}, 'image.jpg' );