列出Perl中隐藏文件以外的目录内容

时间:2014-03-30 13:37:01

标签: perl file hidden

我的代码显示目录中的所有文件,但我不需要显示隐藏文件,例如“。”和“..”。

opendir(D, "/var/spool/postfix/hold/") || die "Can't open directory: $!\n";
    while (my $f = readdir(D)) 
    {
       print "MailID :$f\n";
    }
     closedir(D);

3 个答案:

答案 0 :(得分:8)

听起来好像你可能想要使用glob功能而不是readdir

while (my $f = </var/spool/postfix/hold/*>) {
    print "MailID: $f\n";
}

<...>是另一种通配方法,您也可以直接使用该功能:

while (my $f = glob "/var/spool/postfix/hold/*") {

这将自动跳过隐藏文件。

答案 1 :(得分:4)

只需跳过您不想看到的文件:

while (my $f = readdir(D)) 
  {
     next if $f eq '.' or $f eq '..';
     print "MailID :$f\n";
  }

答案 2 :(得分:2)

在Linux系统上,&#34;隐藏&#34;文件和文件夹是以点开头的。

最好使用 lexical 目录句柄(和文件句柄)。

在您编写的每个Perl程序的开头总是 use strictuse warnings也很重要。

这个简短的程序使用正则表达式来检查每个名称是否以点开头。

use strict;
use warnings;

opendir my $dh, '/var/spool/postfix/hold' or die "Can't open directory: $!\n";

while ( my $node = readdir($dh) ) {
  next if $node =~ /^\./;
  print "MailID: $node\n";
}