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(このファイルが見つかった場所)をファイル名とハッシュとともにデータベースに一度にアップロードします。