检查文件夹是否为空("。"和" ..")

时间:2017-08-29 10:54:28

标签: perl

我是perl的新手并打算检查文件夹是否为空。我发现了这个功能:

Private Sub CommandButton1_Click()

Prod = Array("ZS7_656", "PCO_656")
Dev = Array("NSA_103", "DCA_656")

For lngCounter1 = LBound(Dev) To UBound(Dev)
    For lngCounter = LBound(Prod) To UBound(Prod)

        On Error Resume Next
        Set Zz2 = Workbooks.Open("C:\Users\*****\Desktop\New folder\" & 
        Dev(lngCounter1) & "_B_Roles.xls")
        Zz2.Sheets(Dev(lngCounter1) & "_B_Roles").Range("A1").Value = "anirudh"

        ThisWorkbook.Sheets(Prod(lngCounter)).Range("A2").Value = 
        Zz2.Sheets(Dev(lngCounter1) & "_B_Roles").Range("A1").Value

        On Error GoTo 0
    Next lngCounter
Next lngCounter1

End Sub

它工作正常,但我不明白它为什么要做is_folder_empty { my $dirname = shift; opendir(my $dh, $dirname) or die "Not a directory"; return scalar(grep { $_ ne "." && $_ ne ".." } readdir($dh)) == 0; } 。这里grep { $_ ne "." && $_ ne ".." }.的含义是什么?

2 个答案:

答案 0 :(得分:3)

我假设你看了Detect empty directory with Perl

即使是空目录也包含...目录。

.表示当前目录。

..表示父目录。

所以你的功能是排除这两个结果,因为它们总是在那里。

答案 1 :(得分:2)

目录总是有一个条目。 (此目录)和..(父目录)。 您提到的代码会读取目录的所有条目,如果只有这些条目则为空。

希望我能理解