+ -
当前位置:首页 → 问答吧 → 请教一个用perl删除文件的问题

请教一个用perl删除文件的问题

时间:2010-10-26

来源:互联网

我要删除一个目录下的,30天之前,且文件大小大于10M的所有文件,这个目录下有很多层子目录,代码如下:
  1. #! perl -w

  2. use strict;
  3. use File::Path;
  4. use File::Find;

  5. #删除log

  6. my $logpath = 'E:\log';

  7. find(\&wanted,$logpath);

  8. sub wanted
  9. {
  10.         /.*\.log/i && -s $_ > 10240000 && -M $_ > 30 && unlink $_ && print "$File::Find::name has been deleted\n";       
  11. }
复制代码
print能正常打印出那些需要被删除的文件,但这些文件就是没被删掉。。。
我把
  1. unlink $_  换成 unlink $File::Find::name
复制代码
还是不行,请问问题出在哪儿了,非常感谢各位回复

作者: iuytr123   发布时间: 2010-10-26

我把wanted函数改成下面的,问题就解决了。但是不明白原因,请高手解答下,谢谢
  1. sub wanted
  2. {       
  3.         if(/.*\.log/i and -s $_ > 10240000 and -M $_ > 30)
  4.         {
  5.                 unlink $_ or die "cann't delete file:$_, $!\n";
  6.         }
  7. }
复制代码

作者: iuytr123   发布时间: 2010-10-26