- ベストアンサー
ファイルの削除について
初めて投稿します。Perl初心者です。 あるディレクトリ内のファイル(ファイル名はマシン日付.csvとなっています。例:20040906.csv)を検索し、 今日より90日前の日付を取得し、それ以前のファイルをディレクトリから削除する という操作をしたいと思うのですが。 Perlでこのようなファイル操作は可能なのでしょうか?
- みんなの回答 (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は不要(ファイル名の数字で判断するのだから)
その他の回答 (2)
- moon_night
- ベストアンサー率32% (598/1831)
#1 の追記。 opendir も必要か。。 http://tohoho.wakusei.ne.jp/wwwperl2.htm#opendir
- moon_night
- ベストアンサー率32% (598/1831)
お礼
#1,2の回答に対して返信 早速の回答ありがとうございました。 ところで、90日前の判断をどのようにしたらいいかわかりません。 また、statを使う意味は何でしょうか?