- ベストアンサー
perlのNet::FTPで、ファイルかディレクトリか調べたい
現在、Perlでリモートバックアップする簡単なスクリプトを 書いています。 そのためにNet::FTPモジュールを使っているのですが、 use Net::FTP; $ftp = Net::FTP->new($hostname); $ftp->login($user,$pass); $mydirs = $ftp->ls($backupdir); のようにlsメソッドでファイル一覧を取得した後で、 各ファイルがファイルなのか、ディレクトリなのか 調べたいと思っています。しかしC言語のstat関数の ようなメソッドはNet::FTPにはなさそうです。 どうすれば調べられるか、アドバイスいただけないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
メソッドdirを使って、パーミッション表示列を調べるとか。 あるいは、実際にgetして、失敗した時のプロパティmessageから判定するとか。 再帰的にgetできるコマンド(nctftpとかwgetとか)を使った方が手っ取り早そうですが。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
$ftp->size($filename); でファイルのサイズ(バイト数)を得ることができます。 ディレクトリの場合は、""になり、ファイルがあるけどサイズが0の時は0になります。
質問者
お礼
sizeメソッドを使う方法はトリッキーでおもしろいですね。 応用できそうな場面も多いように思います。 どうもありがとうございました。
お礼
ありがとうございます。 dirメソッドは、まさに求めていたものでした。 dirメソッドで得られる文字列を、正規表現で調べて 目的の機能を得られました。