dir_hashref()中的Net :: FTP :: File错误?

时间:2011-01-18 11:52:08

标签: perl ftp

我正在使用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 个答案:

答案 0 :(得分:2)

我倾向于怀疑文件名包含一个不寻常的字符。

如果您使用普通的FTP客户端连接到该服务器,您是否看到具有正确名称的文件?

尝试将Debug参数传递给Net :: FTP构造函数,例如:

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

这应该会为您提供更多的调试信息,特别是您的脚本和服务器之间的对话,这可能会有用。