如何忽略Perl的readdir中的单点和双点条目?

use*_*627 2 directory perl file-io file

从这里开始跟进:Perl Imgsize没有在循环中工作? 我有另一个问题 - 当它读取目录中的文件时,我怎么不让perl列出单点和双点条目?

在上面的链接问题中,我对while循环(while ($file = readdir($dh)))的输出是这样的:

.
..
file1.jpg
file2.jpg 
file3.jpg 
file4.jpg 
file5.jpg 
Run Code Online (Sandbox Code Playgroud)

这会产生问题,因为我在某个地方也有一个计数器,它正在计算我的文件.而...不计入文件,所以我的柜台是给我的目录中的文件的数量大于真的有.

我加了if($file == "." || $file == ".."){ continue;}if ($file ~ /^\./ or $file ~ /^\.\./) {continue;}而不同的是变化的,而循环的开始......但我不断收到中止"由于编译错误".

我们如何获得单点和双点条目?

Tot*_*oto 7

要测试字符串,您必须使用eq:

if($file eq "." || $file eq ".."){ next;}
Run Code Online (Sandbox Code Playgroud)

要么:

next if $file =~ /^\.\.?$/;
Run Code Online (Sandbox Code Playgroud)

  • 正则表达式`/\A \.\.?\ z /`会更好,因为这与在某些文件系统中有效的文件`".. \n"不匹配. (3认同)