2016-11-09 36 views
8

Pobierany jest duży plik bezpośrednio do pliku za pomocą języka Perl przy użyciu opcji LWP :: UserAgent i :content_file.Wyświetlanie Postępu pobierania pliku LWP :: UserAgent

To jest uproszczony przykład z mojego kodu:

require LWP::UserAgent; 

my $ua = LWP::UserAgent->new; 
$ua->timeout(3600); 
$ua->env_proxy; 

my $response = $ua->get(
    'http://example.com/largefile.xml', 
    :content_file => 'path/to/file/largefile.xml' 
); 

if ($response->is_success) { 
    print "File downloaded\n"; 
} 
else { 
    die $response->status_line; 
} 

Czy istnieje jakiś sposób, aby wyświetlić procent stanu pobierania? (Albo coś podobny do wget wyjściu)

10% [===>         ] 65.120.154 527K/s 

Odpowiedz

9

Z documentation for the module.

$ UA-> show_progress

$ UA-> show_progress ($ logiczna)

Pobierz/ustaw wartość wskazującą, czy pasek postępu powinny być wyświetlane na terminalu jako wnioski są przetwarzane. Wartością domyślną jest FALSE.

+0

To wszystko! Nie mogę uwierzyć, że to było takie łatwe, dzięki! – nanocv

+0

Zobacz także kod źródłowy/bin/lwp-download instalacji ActivePerl. –

+3

@KostiaShiian: Pobieranie lwp nie jest specyficzne dla ActivePerl. Jest to [dostępne z CPAN] (https://metacpan.org/pod/distribution/libwww-perl/bin/lwp-download). –

3

Dave już odpowiedział na twoje pytanie, ale chciałbym zasugerować poniżej 2 moduły.

+0

Dziękujemy! Przyjrzę się także ich obu. – nanocv

+0

LWP :: UserAgent :: ProgressBar zapewnia pasek postępu bardzo zgodnie z tym, co OP miał na myśli. Prawdopodobnie nie jest już zainstalowany, jeśli jest to problem (np. Do przenoszenia) – Randall