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

初めて投稿します。Perl初心者です。

あるディレクトリ内のファイル(ファイル名はマシン日付.csvとなっています。例:20040906.csv)を検索し、
今日より90日前の日付を取得し、それ以前のファイルをディレクトリから削除する
という操作をしたいと思うのですが。
Perlでこのようなファイル操作は可能なのでしょうか?

A 回答 (3件)

#ファイルの日付はファイル名として



$day = 90; #90日前
$dir = './hoge'; #hogeディレクトリとする

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time-(60*60*24*$day)); #$day日前の日付を求める
$del_target = sprintf("%04d%02d%02d",$year+1900,$mon+1,$mday); #yyyymmddの形にする($del_target前を削除対象にする)

opendir(DIR,$dir); #ディレクトリを開く
@list = grep {/\.csv$/i && -f "$dir/$_"} readdir(DIR); #ディレクトリから拡張子csvでファイルだけを吸い出してリストにする
closedir(DIR); #ディレクトリを閉じる
foreach (@list){ #リストから一つずつ調べる
if(/(\d+)\.csv$/i){ #頭が数字のファイルだったら
if($1 lt $del_target){ #$del_targetと比較して該当するなら
unlink("$dir/$_"); #削除
}
}
}


ファイルから作成日時を取得せずにファイル名が作成日時ならstatは不要(ファイル名の数字で判断するのだから)
    • good
    • 0
    • good
    • 0
この回答へのお礼

#1,2の回答に対して返信
早速の回答ありがとうございました。
ところで、90日前の判断をどのようにしたらいいかわかりません。
また、statを使う意味は何でしょうか?

お礼日時:2004/09/06 10:56

stat


http://tohoho.wakusei.ne.jp/wwwperl2.htm#stat



unlink
http://tohoho.wakusei.ne.jp/wwwperl2.htm#unlink

で可能です。

参考URL:http://tohoho.wakusei.ne.jp/wwwperl2.htm#stat,http://tohoho.wakusei.ne.jp/wwwperl2.htm#unlink
    • good
    • 0

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