[EMAIL PROTECTED] (Robert Rendler) writes:

> Currently I'm unable to capture wget's progress bar (the one with the arrow).
> It doesn't appear to be using STDOUT or STDERR. So this his not working:

Why not just use LWP?  

Try running the following example I made for you. 


#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;

# don't buffer the prints to make the status update
$| = 1;

my $ua = LWP::UserAgent->new();
my $received_size = 0;
my $url = 'http://www.cpan.org/authors/id/J/JG/JGOFF/parrot-0_0_7.tgz';
print "Fetching $url\n";
my $request_time = time;
my $last_update = 0;
my $response = $ua->get($url,
                        ':content_cb'     => \&callback,
                        ':read_size_hint' => 8192,
                       );
print "\n";

sub callback {
  my ($data, $response, $protocol) = @_;

  my $total_size = $response->header('Content-Length') || 0;
  $received_size += length $data;

  # FIXME: write the $data to a filehandle or whatever should happen
  # with it here.

  my $time_now = time;

  # this to make the status only update once per second.
  return unless $time_now > $last_update or $received_size == $total_size;
  $last_update = $time_now;

  print "\rReceived $received_size bytes";
  printf " (%i%%)", (100/$total_size)*$received_size if $total_size;
  printf " %6.1f/bps", $received_size/(($time_now-$request_time)||1)
     if $received_size;
}

-- 
ask bjoern hansen, http://www.askbjoernhansen.com/ !try; do();

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to