#!/usr/bin/perluse strict;
use warnings;
my ($usr, $dir, $url, $url2, $out, $out2);
# корневая директория
my $r_dir = "/tmp";
# дополняемый файл вида разделён пробелами
# user1 date url url2
# user2 date url url2
my $file = "/tmp/txt";
open FH, $file or die "can't open $file: $!";
for (;;) {
# вываливаемся если дополняемый файл вдруг удалили или он исчез ))
exit if (stat(FH))[3] == 0;
while (<FH>) {
chomp;
# разбиваем входную строку split'ом по пробелам и складывем в массив
my @str = split(" ", $_);
$usr = $str[0]; # название юзера
$dir = $str[1]; # директория по дате и времени
$url = $str[2]; # линк для закачки файла
$url2= $str[3]; # линк для закачки файла
# если нет $usr или $dir дальнейшее безсмысленно, переходим к следующей строке
next if !defined $usr or !defined $dir;
# если нет $url и $url2 дальнейшее безсмысленно, переходим к следующей строке
next if !defined $url and !defined $url2;
# создаём директорию по дате
mkdir "$r_dir/$dir";
# создаём файл по имени юзера
`touch "$r_dir/$dir/$usr"`;
# если переменная $url определена - делаем вещи
if (defined $url) {
$out = $url; # выходной файл для записи в него загрузки через wget
$out =~ s|^.*/(.*)$|$1|; # обрезаем его, делаем из http://ya.ru только ya.ru
# путь к исполняемому файлу wget и параметры закачки
# wget -q (тихий режим) -t 1 (1 повтор при неудаче) -O сохранить в файл
my $wget = "/usr/local/bin/wget -q -t 1 -O \"$r_dir/$dir/$out\" $url";
# если загрузка неудачна - удаляем выходной файл и создаем файл warning
unlink "$r_dir/$dir/$out" and `touch "$r_dir/$dir/warning"` if system $wget;
}
# если переменная $url2 определена - делаем вещи
if (defined $url2) {
$out2 = $url2; # выходной файл для записи в него загрузки через wget
$out2 =~ s|^.*/(.*)$|$1|; # обрезаем его, делаем из http://ya.ru только ya.ru
# путь к исполняемому файлу wget и параметры закачки
# wget -q (тихий режим) -t 1 (1 повтор при неудаче) -O сохранить в файл
my $wget2 = "/usr/local/bin/wget -q -t 1 -O \"$r_dir/$dir/$out2\" $url2";
# если загрузка неудачна - удаляем выходной файл и создаем файл warning2
unlink "$r_dir/$dir/$out2" and `touch "$r_dir/$dir/warning2"` if system $wget2;
}
}
# спать. спать.. спать... ))
sleep "1";
# читаем файл до конца, сбрасываем флаг EOF
seek (FH, 0, 1);
}