如何在Perl中读取空文件

时间:2012-02-09 04:15:37

标签: perl

我使用readdir方法从目录中读取文件列表到数组。我是否知道如何读取zerro大小文件,因为readdir只会读取非zerro文件。我也想读取空文件(捕获文件名称视为存在,即使它是空的)。我可以知道怎么做吗?以下是我从目录中读取文件的方法: -

opendir (FH, $dirs) || die $! ;
my @lines = readdir (FH) ; 
closedir (FH) ;

提前谢谢。

1 个答案:

答案 0 :(得分:2)

首先,您不应该使用裸字目录句柄。第二,-z tells you when a file is empty。这样的事情应该有效:

use strict;
use warnings;

my $dirs="/whatever/dir/you/want";

opendir(my $dh,$dirs) or die $!;

#only grabbing actual files that we can read.
my @files=grep{(-f $_) and (-r $_)} map{"$dirs/$_"} readdir($dh); 

closedir($dh);

foreach my $file(@files)
{
  if(-z $file)
  {
    print "File $file is empty.\n";
  }
  else
  {
    print "File $file is not empty.\n";
  }
}

事实上,正如TLP在评论中指出的那样,您可以使用-s来获取文件的大小(以字节为单位)。