CGI、Perlでの質問です。


Perlを利用してファイル操作をしているのですが、そのフォルダ内のファイル名や拡張子を全て調べる効率のいい方法はないでしょうか?

最も参考になった方に200ポイントを進呈致します。よろしくお願いします!

回答の条件
  • 1人5回まで
  • 登録:2006/08/24 11:48:25
  • 終了:2006/08/24 13:32:48

回答(4件)

id:ota2244 No.1

ota2244回答回数77ベストアンサー獲得回数42006/08/24 12:08:24

ポイント50pt

このようにすればファイル名を全て取得できます。


opendir (HDL, $imgdir);

while (my $file = readdir HDL) {

 next if $file =~ /^\.{1,2}$/;

 $count++;

 push (@tmp, $file);

}

closedir (HDL);

id:zachouR

簡潔なソースをありがとうございます!

参考になります。

2006/08/24 13:28:32
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/08/24 12:36:07

ポイント50pt

調べるディレクトリにすでにいると仮定して、

while(<*>) {

chomp;

next if /^\.+$/;

print $_,"\n";

m/\.([^\.])$/;

print $1,"\n";

}

が手っ取り早いでしょうか。

id:zachouR

これも、状況によっては使えそうです!

ありがとうございます!

2006/08/24 13:28:27
id:Iwa No.3

Iwa回答回数120ベストアンサー獲得回数62006/08/24 12:12:23

ポイント200pt

プロンプトで以下のサンプルを動かすと、ファイル名 : 拡張子 の書式で一覧が表示されます。

ブラウザでCGIとして試す場合はHTTPヘッダの出力を頭に付けてください。

$dir = './hogehoge'; #対象ディレクトリ

opendir(DIR,$dir);

while($get = readdir(DIR)){

if(-f "$dir/$get"){

($ext = $get) =~ s/^.+\.([^\.]+)$/$1/;

print "$get : $ext\n";

}

}

closedir(DIR);

id:zachouR

これは、拡張子とファイル名をわける方法ですね!

丁寧にありがとうございます!


今回は、こちらが使えそうなので、こちらを最も参考になった事にしたいと思います。その他の方もありがとうございました。ささやかですが、50ポイントづつお送り致します。

2006/08/24 13:31:17
id:i_am_partner No.4

i_am_partner回答回数21ベストアンサー獲得回数12006/08/24 12:52:30

ポイント50pt

すでに出ているかもしれませんが、こういうのはどうでしょう。

opendir(DIR, "フォルダのパス");

while($file = readdir(DIR))

{

my(@tmp) = split(/\./, $file);

print 'ファイル名:'.$file.' 拡張子:'.$tmp[1]."\n";

}

closedir(DIR);

id:zachouR

splitですね。そうか、、、こんな方法もあるんですね。

参考になります!

2006/08/24 13:28:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません