dポイントプレゼントキャンペーン実施中!

Net::FTPを使いファイル一覧のみを取得したい

以前の質問では大変お世話になりました。
「Net::FTPを使いフォルダ一覧を取得」
http://okwave.jp/qa/q5555220.html

今度は、Net::FTPを使いファイル一覧のみを取得したいと思ってます。

(ここから)
use Net::FTP;
my $ftp = Net::FTP->new("hoge.sav.ne.jpp", Debug => 0 , Passive => "true"); # 接続
$ftp->login("xxxx", "pass"); # ログイン
my @dir = $ftp->cwd('/public_html');
my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
my @dir_names_full = @dir[2..$#dir]; #  自フォルダと親フォルダ("."と"..")を除く。
my @dir_names_short = map { (split)[8] } @dir_names_full; # フォルダ名のみを取得
$ftp->quit;
print "$_<br>\n" for @dir_names_full;
(ここまで)

my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
の部分の「grep /^d/,」を削除したら、ファイルも一緒に表示させることは出来たのですが
正しく表示されませんでした。

(ここから)
drwxrwx--- 2 xxxx xxxxx 48 Sep 3 14:59 Maildir
drwx---r-x 2 xxxx xxxxx48 Sep 3 14:59 log
-rw-r--r-- 1 xxxxnobody 2932 Oct 21 09:34 ent4.html
-rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent5.html
-rw-r--r-- 1 xxxx nobody 2878 Oct 21 09:34 index.html
(ここまで)


最終的な結果は
(ここから)
-rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent1.html
-rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent2.html
-rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent3.html
-rw-r--r-- 1 xxxx nobody 2932 Oct 21 09:34 ent4.html
-rw-r--r-- 1 xxxx nobody 2933 Oct 21 09:34 ent5.html
-rw-r--r-- 1 xxxx nobody 2878 Oct 21 09:34 index.html
(ここまで)
で表示させたいのです。

検索をしていたら、grepで出来そうなのかと思いやってみましたがうまくいきませんでした。

お手数かけます。
よろしくお願いいたします。

A 回答 (2件)

こちらで試してみたのですが、


ディレクトリ以外のファイルが一覧で取得できました。

やっている事は、取得した文字列の最初の一文字目が
どの文字かを判別して配列に格納している訳ですが、
以下のようにやってみても結果は変わらないでしょうか?
my @dir = grep /^\-/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
または
my @dir = grep /^[^d]/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得(d以外とマッチ)
    • good
    • 0
この回答へのお礼

diszoさん

回答ありがとうございます。

>my @dir = grep /^\-/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
>または
>my @dir = grep /^[^d]/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得(d以外とマッチ)

申し訳ございませんでした。
どっちも問題ありませんでした。単純な記述ミスを別の場所でやっていました。
ありがとうございます!!
これで作業が進められます。

お礼日時:2010/01/07 14:32

簡単にやるのでしたら、


my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
の部分を
my @dir = grep /^-/, $ftp->dir; # ←ファイル一覧をdirコマンドで取得
に変更するではだめですか?

この回答への補足

diszoさん

回答ありがとうございます。
早速やってみました。

my @dir = grep /^d/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得

my @dir = grep /^-/, $ftp->dir; # ← フォルダ一覧をdirコマンドで取得
としましたが結果が変わりませんでした。
やり方が悪いのでしょうか?
今回サーバーの内容はファイルは拡張子がhtmlを対象としているので、それで取得できないかとも思ってましたがうまくいっておりません。

お手数かけます。

以上、よろしくお願いいたします。

補足日時:2010/01/06 14:54
    • good
    • 0

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