プロが教える店舗&オフィスのセキュリティ対策術

現在、Perlでリモートバックアップする簡単なスクリプトを
書いています。

そのためにNet::FTPモジュールを使っているのですが、
use Net::FTP;
$ftp = Net::FTP->new($hostname);
$ftp->login($user,$pass);
$mydirs = $ftp->ls($backupdir);

のようにlsメソッドでファイル一覧を取得した後で、
各ファイルがファイルなのか、ディレクトリなのか
調べたいと思っています。しかしC言語のstat関数の
ようなメソッドはNet::FTPにはなさそうです。

どうすれば調べられるか、アドバイスいただけないでしょうか?

A 回答 (2件)

メソッドdirを使って、パーミッション表示列を調べるとか。


あるいは、実際にgetして、失敗した時のプロパティmessageから判定するとか。

再帰的にgetできるコマンド(nctftpとかwgetとか)を使った方が手っ取り早そうですが。
    • good
    • 0
この回答へのお礼

ありがとうございます。

dirメソッドは、まさに求めていたものでした。
dirメソッドで得られる文字列を、正規表現で調べて
目的の機能を得られました。

お礼日時:2005/02/07 16:56

$ftp->size($filename);


でファイルのサイズ(バイト数)を得ることができます。
ディレクトリの場合は、""になり、ファイルがあるけどサイズが0の時は0になります。
    • good
    • 0
この回答へのお礼

sizeメソッドを使う方法はトリッキーでおもしろいですね。
応用できそうな場面も多いように思います。

どうもありがとうございました。

お礼日時:2005/02/07 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!