人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CGI、Perlでの質問です。

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

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

●質問者: zachouR
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CGI Perl ファイル フォルダ ポイント
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● ota2244
●50ポイント

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


opendir (HDL, $imgdir);

while (my $file = readdir HDL) {

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

$count++;

push (@tmp, $file);

}

closedir (HDL);

◎質問者からの返答

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

参考になります。


2 ● b-wind
●50ポイント

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

while(<*>) {

chomp;

next if /^\.+$/;

print $_,"\n";

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

print $1,"\n";

}

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

◎質問者からの返答

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

ありがとうございます!


3 ● Iwa
●200ポイント

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

ブラウザで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);

◎質問者からの返答

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

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


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


4 ● i_am_partner
●50ポイント

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

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

while($file = readdir(DIR))

{

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

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

}

closedir(DIR);

◎質問者からの返答

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

参考になります!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ