#!/usr/bin/perl -w
#
# Pasek postpu: Kropki - prosty przykad paska postpu LWP.
# http://disobey.com/d/code/ lub skontaktuj si z morbus@disobey.com.
#
# Ten kod jest oprogramowaniem darmowym. Mona go dalej rozpowszechnia
# i modyfikowa na takich zasadach, jakie dotycz samego Perla.
#

use strict; $|++;
my $VERSION = "1.0";

# upewnijmy si, e mamy potrzebne moduy; jeli nie, koczymy.
eval("use LWP 5.6.9;");  die "[err] Wymagane LWP w wersji 5.6.9 lub wyszej.\n" if $@;

# teraz sprawdzamy przekazane do adowania adresy URL.
die "[err] Nie podano adnych adresw URL.\n" unless @ARGV;

# nasze zaadowane dane.
my $final_data = undef;

# ptla po kolejnych adresach URL.
foreach my $url (@ARGV) {
   print "Pobieranie danych spod adresu ", substr($url, 0, 40), "... ";

   # tworzenie nowej przegldarki, pobranie aktualnego URL.
   # wszystkie dane s wrzucane do zmiennej $final_data, do ktrej
   # wizana jest procedura wywoywana zwrotnie.
   my $ua = LWP::UserAgent->new(  );
   my $response = $ua->get($url, ':content_cb' => \&callback, );
   print "\n"; # Po ostatniej kropce po adowaniu danych.
}

# raz na fragment.
sub callback {
   my ($data, $response, $protocol) = @_;
   $final_data .= $data;
   print ".";
}
