RFC2068 (HTTP/1.1) describes a partial-content protocol. If a response comes back with "Accept-Ranges: bytes" then you may ask for "Range: bytes=-128"
in a request, and get just the last 128 bytes. That'd be like this:
my $url = "http://www.server.com/filename.mp3";
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
use HTTP::Request::Common;
my $response = $ua->simple_request(GET $url, Range => 'bytes=-128');
if ($response->is_success) {
print "last 128 bytes is: ", substr($response->content, -128), "\n";
print "(although entire content was retrieved)\n" if length ($respon
+se->content) > 128;
}
Note that if the range request is not honored, you'll get back the entire content instead. If you wanted, you can probe first to see if the "Accept-ranges" header is in the response for that particular URL.
-- Randal L. Schwartz, Perl hacker