• ベストアンサー

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にはなさそうです。 どうすれば調べられるか、アドバイスいただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

メソッドdirを使って、パーミッション表示列を調べるとか。 あるいは、実際にgetして、失敗した時のプロパティmessageから判定するとか。 再帰的にgetできるコマンド(nctftpとかwgetとか)を使った方が手っ取り早そうですが。

angband
質問者

お礼

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

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

$ftp->size($filename); でファイルのサイズ(バイト数)を得ることができます。 ディレクトリの場合は、""になり、ファイルがあるけどサイズが0の時は0になります。

angband
質問者

お礼

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

関連するQ&A

専門家に質問してみよう