所以我为自己设计了一个小项目来帮助学习 Perl,这是我可以实际使用的东西。这个想法是比较 2 个目录中的文件修改日期列表。1 从 FTP 和 1 在我的本地,如果它们较新,则从本地上传(这部分可以稍后处理)。我创建了单独的脚本(我计划将它们组合起来,目前只是在修补),一个用于从 FTP 读取目录并获取文件。另一个比较2个目录中的文件列表(文件列表位于一个数组中),这就是问题所在。我可以得到它来比较两个目录。我似乎无法锻炼如何让它比较同名文件。如果只有一个目录中存在文件,它将将该文件与同一数组位置中的另一个文件进行比较。
这可以很容易地用 if 语句处理(我说很容易,但我不确定),但无法理解哪些参数会这样做。
到目前为止我所拥有的:
opendir(IMD, "/TRAINING/Perl") || die("Cannot open directory");
@thefiles= readdir(IMD);
opendir(IMD2, "/TRAINING/Perl2") || die("Cannot open directory");
@thefiles2= readdir(IMD2)
foreach my $file (@thefiles) {
# if ($file != @thefiles2[$counter]){
if (compare($file, @thefiles2[$counter]) == 0){
print $file, " Matches ";
print @thefiles2[$counter], "\n";
$counter++;
}
# elsif ($file == @thefiles2[$counter]){
elsif (compare($file, @thefiles2[$counter]) != 0){
print $file, " ";
print "Does not match";
print @thefiles2[$counter], "\n";
$counter++;
}
}
目前我只是比较相同数组位置的文件名,直到我可以正常工作,然后将其更改为使用日期。已经使用 -M 了,但现在正在做同样的事情。我意识到这远非我所需要的,并且确实需要任何指针,尤其是因为我的编程总体上很笨拙。
基本上我想要它做的,
If ($file1 !exists in $dir2){
Print "not exists"
}
If ($file1 exists in $dir2){
Compare its date with $file2 in $dir2 and print newer/older
}
如果我现在可以让它工作,那么我可以慢慢地将它修改为我想要它做的事情。
感谢你们可以为我提供的任何帮助。