電子書籍の厳選無料作品が豊富!

サーバー内のファイルを検索するのにKentWebさんのwwwsrch.cgiを利用しています。
#
# すべてのファイルをなめ回す
#
sub search1 {
local($dir) = $_[0];
local(@filelist, $file, $filename);
opendir(DIR, $dir);
@filelist = readdir(DIR);
closedir(DIR);
foreach $file (@filelist) {
if ($file eq ".") { next; }
if ($file eq "..") { next; }
$filename = "$dir/$file";
if (-d $filename) {
if ($recursive_flag) {
&search1($filename);
}
} else {
&search2($filename, $dir);
}
}
}

#
# ファイルの中身を検索する
#

# 指定していない拡張子のファイルは無視する
$suffix = ".html .cgi .pl";
$fname = substr($target, rindex($target, "."));
if ($suffix{$fname} != 1) {
return;
}

↑の条件に30日以上古いファイルを無視するように改造することはできないでしょうか?

検索対象ファイルが数十万以上と莫大に増加してきたため、最新のファイルのみ検索対象にできればと考えております。

A 回答 (1件)

変更時刻のファイルテスト演算子-Mが使えそうな。

こんな感じ:

next unless -M $file < 30;

何を持って「30日以上」なのか不明なのではずしてるかも。

参考URL:http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
質問直後に-Mとifを使って何とかできたのですが、
お教えいただいた書き方の方が、綺麗ですので、
早速使わせてもらいました。
30日のところは$FORM{'day'}にして、フォームで指定するようにしました。
unlessのような書き方は使ったことがなかったため大変勉強になりました。

お礼日時:2008/09/15 22:51

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