我的代码显示目录中的所有文件,但我不需要显示隐藏文件,例如“。”和“..”。
opendir(D, "/var/spool/postfix/hold/") || die "Can't open directory: $!\n";
while (my $f = readdir(D))
{
print "MailID :$f\n";
}
closedir(D);
答案 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 strict
和use 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";
}