perl用LWP下载,每次下载回来都是不完整的。请达人指正

perl用LWP下载,每次下载回来都是不完整的。请达人指正

用perl模拟wget 下载,不过每次下载得到的文件都不是完整的,少了几十K。。

点解啊??

use strict;
$|++;

use LWP 5.6.9;

my $final_data;
my $total_size;

my $url = "http://localhost/hello.zip";

print "正在下载...\n";#, substr($url, 0, 40), "...\n";

my $ua = LWP::UserAgent->new(  );
my $result = $ua->head($url);
my $remote_headers = $result->headers;
$total_size = $remote_headers->content_length;

open (MYFILE, '+>hello.zip');
my $response = $ua->get($url,':content_cb' => \&callback );
print MYFILE $final_data;
close(MYFILE);

sub callback {
   my ($data, $response, $protocol) = @_;
   $final_data .= $data;
   print progress_bar( length($final_data), $total_size, 25, '=' );
}

sub progress_bar {
    my ( $got, $total, $width, $char ) = @_;
    $width ||= 25; $char ||= '=';
    my $num_width = length $total;
    sprintf "|%-${width}s| 已下载 %${num_width}s 字节,共 %s 字节(%.1f%%)\r",
        $char x (($width-1)*$got/$total). '>',
        $got, $total, 100*$got/+$total;
}
open (MYFILE, '+>hello.zip');
binmode MYFILE;


QUOTE:
原帖由 放驴娃 于 2007-11-16 17:10 发表
open (MYFILE, '+>hello.zip');
binmode MYFILE;

嗯。下载二进制档确实没问题了。
但是下载html档还是有问题,应该怎么写啊?

下载html档,txt等纯文本的文档一直不行,
找了好久的关于binmode的文档也没看到什么解决的方法。
像这样就可以下载个病毒去别人机器上了