Как читать пустой файл в Perl - PullRequest
2 голосов
/ 09 февраля 2012

Я использую метод readdir для чтения списка файлов из каталогов в массив. Могу ли я узнать, как читать файл с нулевым размером, так как readdir будет читать только не нулевой файл Я хотел бы также прочитать пустой файл (захватить имя файла так же, как он существует, даже если он пуст). Могу ли я знать, как это сделать? Ниже показано, как я читаю файл из каталогов: -

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

Заранее спасибо.

1 Ответ

2 голосов
/ 09 февраля 2012

Прежде всего, вы не должны использовать дескриптор каталога с пустым словом.Во-вторых, -z сообщает вам, когда файл пуст .Примерно так должно работать:

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 для получения размера (в байтах) файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...