我使用 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;
如果您想知道为什么我不下载所有内容然后解析每个文件和哈希的文件夹,这是因为我在循环中下载所有这些文件。在每个循环中,我将相关的源 URL(找到该文件的位置)连同文件名和哈希一起上传到数据库中。