• ベストアンサー

ファイルの削除について

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.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)
回答No.2

#1 の追記。 opendir も必要か。。 http://tohoho.wakusei.ne.jp/wwwperl2.htm#opendir

参考URL:
http://tohoho.wakusei.ne.jp/wwwperl2.htm#opendir
pyonsama
質問者

お礼

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

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

関連するQ&A

専門家に質問してみよう