解決済みの質問
質問:No.1197511
困ってます
お気に入り投稿に追加する (0人が追加しました)
回答数2
閲覧数406
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にはなさそうです。

どうすれば調べられるか、アドバイスいただけないでしょうか?
投稿日時 - 2005-02-02 00:25:35
質問者が選んだベストアンサー
回答:No.1
メソッドdirを使って、パーミッション表示列を調べるとか。
あるいは、実際にgetして、失敗した時のプロパティmessageから判定するとか。

再帰的にgetできるコマンド(nctftpとかwgetとか)を使った方が手っ取り早そうですが。
投稿日時 - 2005-02-02 00:45:28
この回答を支持する
(現在0人が支持しています)
お礼
ありがとうございます。

dirメソッドは、まさに求めていたものでした。
dirメソッドで得られる文字列を、正規表現で調べて
目的の機能を得られました。
投稿日時 - 2005-02-07 16:56:10
この質問は役に立ちましたか?
2人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答
回答:No.2
$ftp->size($filename);
でファイルのサイズ(バイト数)を得ることができます。
ディレクトリの場合は、""になり、ファイルがあるけどサイズが0の時は0になります。
投稿日時 - 2005-02-02 02:46:39
この回答を支持する
(現在0人が支持しています)
お礼
sizeメソッドを使う方法はトリッキーでおもしろいですね。
応用できそうな場面も多いように思います。

どうもありがとうございました。
投稿日時 - 2005-02-07 16:57:09
もっと聞いてみる
関連するQ&Aはこちら
Net::FTPを利用してサーバ内にあるファイル一覧を取得しようとしています。 use Net::FTP $ftp = Net::FTP->new($hostname); $ftp->login($...
Net::FTPを使いファイル一覧のみを取得したい 以前の質問では大変お世話になりました。 「Net::FTPを使いフォルダ一覧を取得」 http://okwave.jp/qa/q5555220.h...
Net::FTPを使いフォルダ一覧を取得したいと思い以下の参考サイトを発見しました。 http://dqn.sakusakutto.jp/2008/06/perl_netftpftp.html 非...
この他の関連するQ&Aをキーワードで探す
プログラミングのサブカテゴリ
[PR] おすすめの注目情報
カテゴリ:Perl
RSS
-PR-
PR
-PR-