#!/usr/bin/perl
use strict;
use LWP::Simple;
my $url="http://www.server.ru/mp3/";
my $dir="/path/to/your/mp3/dir";
grep {getfile("$url$1.mp3")
if m!<A HREF="(.*?)\.mp3">!i}
split /\n/ => get $url;
sub getfile{
print "$_[0]\t=\tbegin...\n";
print @{[head $_[0]]}[1],"\n";
my $res = LWP::UserAgent->new->request(new HTTP::Request GET=> $_[0]);
$_[0]=~s!.*/!!;
if ($res->is_success) {
open (ABC, ">$dir/$_[0]") or die "Can't create $dir/$_[0]: $!";
binmode(ABC);
print ABC $res->content; close ABC or die $!;
} else {
print $res->status_line;
}
return 1;
}
конструкция
grep {getfile("$url$1.mp3")
if m!<A HREF="(.*?)\.mp3">!i}
split /\n/ => get $url;
берет листинг директории(например без индексного файла) get $url, сплитит его по
переводу каретки, возвращает массив, который в цикле перебирается и если
есть линк
на *.mp3, то подпрограмме передается адрес файла $url$1.mp3.
В строке print @{[head $_[0]]}[1],"\n"; берется
head, возвращающий массив и из
него вытаскивается второй элемент, который является размером файла и затем
выводится на печать.