2011-01-18 4 views
0

Net::FTP::Fileモジュールを使用して、リモートパス内のディレクトリのリストを取得しています。私はenという名前のディレクトリが同じくらいn、詳細を示し、この場合を踏んまでは正常に動作するように見えた:Net :: FTP :: dir_hashref()のバグ?

'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リスト内のディレクトリだけを取得するもう1つの(便利な)方法はありますか?標準Net::FTPdir()メソッドを提供しますが、解析する必要がある文字列のようなls -lの単なるリストです。

+0

lennyボックスでコードスニペットを使用すると、再現できませんでした。 –

+0

特定のサーバー(debian lenny btwを実行しています)で発生します。 –

+2

ファイル名それ自体は魚介類であり、すなわち、印刷できない文字またはそのようなものを含んでいる。 – Svante

答えて

2

ファイル名に珍しい文字が含まれていると思われる傾向があります。

通常のFTPクライアントを使用してそのサーバーに接続する場合、正しい名前のファイルが表示されますか。ネット:: FTPコンストラクタ、インスタンスのためにデバッグパラメータを渡してみ

:スクリプトとサーバの間の対話特に、あなたにいくつかのより多くのデバッグ情報を取得する必要があります

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

ている可能性が高いでしょう使用する。

+0

通常のFTPクライアントでもファイル名にも問題は見られません。 。ディレクトリは、httpリクエストを介して完全にアクセス可能で、 'cd'などでアクセスできます。' $ ftp-> dir'の出力も問題ありません。 –

+0

デバッグ情報に通常の接続が表示されます。エラーはありません –

+0

おそらくNet :: FTP :: Fileにバグが見つかりました。コードを見ると、私はそれが行50によって引き起こされると信じています:$ path = substr($ path、1); #そこにある最初のスペースを削除しますが、名前の一部ではありません –

関連する問題