Net :: FTP :: File ошибка в dir_hashref ()? - PullRequest
0 голосов
/ 18 января 2011

Я использую модуль Net::FTP::File, чтобы получить список каталогов в удаленном пути.Казалось, что он работал нормально, пока я не остановился на этом случае, когда каталог с именем en отображается как просто n, подробности:

'n' => {
    'Bytes' => '4096',
    'Group' => 'client3',
    'Owner' => '5004',
    'Path' => 'n',
    'Last Modified Year/Time' => '17:59',
    'Permissions' => 'drwxrwxr-x',
    'Last Modified Day' => '17',
    'Link To' => undef,
    'Number of Links' => '7',
    'Last Modified Month' => 'Jan'
},

каталог на сервере имеет правильное имя (en) тот же владелец / группа / права доступа, что и для других каталогов, которые отображаются нормально.

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

#!/usr/bin/perl

use strict;
use warnings;
use Net::FTP::File;

use Data::Dumper;
$Data::Dumper::Terse  = 1;
$Data::Dumper::Indent = 1;

my $ftp = new Net::FTP($site);
$ftp->login($user, $pass);
print Dumper $ftp->dir_hashref;

Есть ли что-то, что я делаю неправильно, что может вызвать эту ошибку?Или это ошибка в функции dir_hashref () модуля?

В качестве альтернативы, какой еще (удобный) способ получить только каталоги в списке FTP?Стандартный Net::FTP предоставляет метод dir(), но это просто список ls -l подобных строк, которые необходимо проанализировать.

1 Ответ

2 голосов
/ 18 января 2011

Я был бы склонен подозревать, что имя файла содержит необычный символ.

Вы видите файл с правильным именем, если вы используете обычный FTP-клиент для подключения к этому серверу?

Попробуйте передать параметр Debug в конструктор Net :: FTP, например:

my $ftp = Net::FTP->new($hostname, Debug => 1);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...