Как проверить, правильно ли работал `lwp-download`? - PullRequest
1 голос
/ 03 августа 2010

Я ничего не знаю о Perl, но мне срочно нужно изменить скрипт Perl. В какой-то момент он загружает файл размером около 500 МБ с сервера, используя system("lwp-download $HttpPath $Out");.

Могу ли я узнать, прошел ли процесс загрузки правильно, например, проверить, имеет ли загруженный файл тот же размер, что и исходный?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 августа 2010

Глупо выделять из вашей Perl-программы запуск lwp-download, другой Perl-программы. Просто замените этот вызов на mirror API из LWP::Simple, и вы получите достойное сообщение об ошибке прямо в вашей программе вместо того, чтобы связываться с кодами выхода.

Если вам нужна еще более качественная / детальная проверка ошибок, доступна mirror из LWP::UserAgent.

0 голосов
/ 03 августа 2010

Как правило, команда system возвращает * состояние завершения программы, в которой она выполнялась. По соглашению, возвращаемое значение ноль означает успех, а ненулевое значение означает какую-то ошибку.

Типичная идиома что-то вроде

my $status = system($command);
if ($status == 0) {
    # the program succeeded ...
} else {
    # the program failed ...
    warn "The program failed. Status = ", $status>>8, "\n";
}

* - вид, подробности см. perldoc -f system

...