使用LWP下载可执行文件类型和内存中的响应,我能够散列该文件。但是,我怎样才能保存这个文件在我的系统?我想我在下面试着走错了路。下载成功了,因为我能够正确生成哈希(我已经通过下载实际文件和比较哈希来进行双重检查)。perl保存lwp下载的文件
use strict;
use warnings;
use LWP::Useragent;
use Digest::MD5 qw(md5_hex);
use Digest::MD5::File qw(file_md5_hex);
use File::Fetch;
my $url = 'http://www.karenware.com/progs/pthasher-setup.exe';
my $filename = $url;
$filename =~ m/.*\/(.*)$/;
$filename = $1;
my $dir ='/download/two';
print "$filename\n";
my $ua = LWP::UserAgent->new();
my $response = $ua->get($url);
die $response->status_line if !$response->is_success;
my $file = $response->decoded_content(charset => 'none');
my $md5_hex = md5_hex($file);
print "$md5_hex\n";
my $save = "Downloaded/$filename";
unless(open SAVE, '>>'.$save) {
die "\nCannot create save file '$save'\n";
}
print SAVE $file;
close SAVE;
如果你想知道为什么我不能代替下载的一切,然后分析该文件夹的每个文件的哈希,其由于IM下载在一个循环中的所有这些文件。在每个循环中,我都会将相关源URL(发现此文件的位置)以及文件名和散列一起上传到数据库中。
非常感谢,但getstore()的缺点是该文件夹必须已经存在。当没有文件/文件夹出现时,我感到震惊。 –