Причина ошибки в Perl Net :: FTP

63
5

Я использую Net :: FTP для передачи файлов на мэйнфрейм, и я тестирую условия отказа.

Мой код в основном состоит из следующих строк:

    my $ftp = Net::FTP->new ("mainframe.com", Timeout => 20);
if (! $ftp) {
logMessage ("Could not connect to host: $!");
return;
}

if (! $ftp->login ("paxdiablo", "demigodemporeroftheuniverse")) {
logMessage ("Could not log in to host: $!");
$ftp->quit ();
return;
}

if (! $ftp->put ("myfile.txt", "'CANT.WRITE.TO.THIS'")) {
logMessage ("Could not put file: $!");
$ftp->quit ();
return;
}

Я знаю, что не могу создать набор данных CANT.WRITE.TO.THIS поскольку у меня нет необходимых разрешений, но, когда я пытаюсь, единственное сообщение, которое я вижу, это:

Could not put file:

В $! что касается проблемы. Я посмотрел в Net::FTP doco и все, что он говорит:

put ( LOCAL_FILE [, REMOTE_FILE ] )

Put a file on the remote server. LOCAL_FILE may be a name or a filehandle. If LOCAL_FILE is a filehandle then REMOTE_FILE must be specified. If REMOTE_FILE is not specified then the file will be stored in the current directory with the same leafname as LOCAL_FILE.

Returns REMOTE_FILE or the generated remote filename if REMOTE_FILE is not given.

Я также не могу найти ничего о том, как получить конкретную ошибку (например, $ftp->getLastError() или что-то подобное).

Как я могу указать пользователю, почему передача не удалась?

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

спросил(а) 2021-01-25T20:00:02+03:00 4 месяца, 2 недели назад
1
Решение
99

Из Net :: FTP:

$ftp = Net::FTP->new("some.host.name", Debug => 0)
or die "Cannot connect to some.host.name: $@"

Обратите внимание на $@.

$ftp->cwd("/pub")
or die "Cannot change working directory ", $ftp->message;

Примечание $ftp->message

ответил(а) 2021-01-25T20:00:02+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема