Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Current download information..

by Dominus (Parson)
on Jan 05, 2001 at 01:34 UTC ( [id://49877]=note: print w/replies, xml ) Need Help??


in reply to Current download information..

(Summary: The anonymous monk wants a progress bar for his download, which I think might be via HTTP.)

I suppose you are using LWP::Simple or LWP::UserAgent. You need to use LWP::UserAgent for this. Look in the manual for the following version of the request function:

$response = $ua->request($request, \&callback, 4096); sub callback { my($data, $response, $protocol) = @_; .... }

Here callback is a function that gets called automatically every time your program receives 4096 bytes. callback can be responsible for updating the progress status bar.

Replies are listed 'Best First'.
Re: Re: Current download information..
by Anonymous Monk on Jan 05, 2001 at 01:54 UTC
    That's exactly what I wanted!!! :)) Alucard
Re: Re: Current download information..
by ichimunki (Priest) on Jan 05, 2001 at 02:20 UTC
    Since you're being incredibly helpful, can I impose on you further than anon_monk did?

    In the callback your @_... so the callback gets all 4096 bytes of $data, the $response is the same as the other $response in the snippet, or is that something else now, and the $protocol (which I assume is "http", "ftp", "file" or whatever else UserAgent handles).

    Once the request is finished, does the original $response contain the full result of the transaction still? And is there a way to insert a last/return clause into the callback which aborts the request?

    Should I just RTFM? {grin}
      Says ichimunki:

      Since you're being incredibly helpful, can I impose on you further than anon_monk did?
      Um, no. Now you're asking me to read you the manual. If you read it and you don't understand, then I will try to answer. You could also try writing a few small example programs to test out your guesses about how it works.

      is there a way to insert a last/return clause into the callback which aborts the request?

      The general pattern for such things in Perl is:

      eval { $ua->request($request, \&callback, 4096) }; if ($@ =~ /^Request aborted/) { # handle aborted request } elsif ($@) { die; } sub callback { # ... die "Request aborted" if ...; # ... }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://49877]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2024-04-18 13:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found