我目前正在写入一个程序, 该程序将最终比较两个目录中的文件, 并显示每个文件中已更改的函数。 然而, 当检查目录中的内容是文件还是子目录时, 我遇到了一个问题 。
现在,当我检查它是否只是一个带有 < code> - d code> 检查的目录时, 它没有捕获任何子目录。 我在下面张贴了部分代码 。
opendir newDir, $newDir;
my @allNewFiles = grep { $_ ne . and $_ ne .. } readdir newDir;
closedir newDir;
opendir oldDir, $oldDir;
my @allOldFiles = grep { $_ ne . and $_ ne .. } readdir oldDir;
closedir oldDir;
foreach (@allNewFiles) {
if(-d $_) {
print "$_ is not a file and therefore is not able to be compared
";
} elsif((File::Compare::compare("$newDir/$_", "$oldDir/$_") == 1)) {
print "$_ in new directory $newDirName differs from old directory $oldDirName
";
print OUTPUTFILE "File: $_ has been update. Please check marked functions for differences
";
print OUTPUTFILE "
";
print OUTPUTFILE "+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
";
} elsif((File::Compare::compare("$newDir/$_", "$oldDir/$_") < 0)) {
print "$_ found in new directory $newDirName but not in old directory $oldDirName
";
print "Entire file not printed to output file but instead only file name
";
print OUTPUTFILE "File: $_ is a new file!
";
print OUTPUTFILE "+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
";
}
}
foreach (@allOldFiles) {
if((File::Compare::compare("$newDir/$_", "$oldDir/$_") < 0)) {
print "$_ found in old directory $oldDirName but not in new directory $newDirName
";
}
}