Im przy użyciu LWP do pobrania typu pliku wykonywalnego i odpowiedzi w pamięci, jestem w stanie hash pliku. Jak jednak zapisać ten plik w moim systemie? Myślę, że jestem na niewłaściwym torze z tym, co próbuję poniżej. Pobieranie przebiega pomyślnie, ponieważ mogę poprawnie wygenerować hasz (dwukrotnie sprawdziłem, pobierając rzeczywisty plik i porównując skróty).perl zapisać plik pobrany przez 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;
Jeśli zastanawiasz się, dlaczego nie ja zamiast pobrać wszystko następnie zanalizować folder dla każdego pliku i haszyszu, jego ponieważ im pobieranie wszystkie te pliki w pętli. I podczas każdej pętli wysyłam odpowiedni URL źródłowy (gdzie ten plik został znaleziony) wraz z nazwą pliku i hash do bazy danych za jednym razem.
Wielkie dzięki, ale wadą getstore() jest to, że folder musi już istnieć. Przez chwilę byłem zszokowany, gdy nie pojawił się żaden plik/folder. –