我是一个初学者 PERL 程序员,我遇到了一个我无法克服的障碍。我整天都在阅读和重新阅读 perl.org 上的网络帖子和 Simon Cozens 的书,但似乎无法解决问题。
我使用下面的代码的目的是遍历目录中的文件,当文件具有特定字符串时,使用名称来验证相同的文件名是否不存在具有不同的扩展名,如果不存在,则打印给我文件名(稍后我将实现文件的删除,但现在我想确保它能够正常工作。)具体来说,我正在查找 .mdb 文件,并在检查没有关联的 .ldb 文件后,删除 .mdb 文件。
现在我的代码返回这个:
RRED_Database_KHOVIS.ldb
RRED_Database_KHOVIS.mdb
I will kill RRED_Database_KHOVIS.mdb
RRED_Database_mkuttler.mdb
I will kill RRED_Database_mkuttler.mdb
RRED_Database_SBreslow.ldb
RRED_Database_SBreslow.mdb
I will kill RRED_Database_SBreslow.mdb
我希望它只在没有关联 .ldb 文件的 .mdb 文件之后返回“我会杀了……”。
我当前的代码如下。我感谢提供的任何帮助...
use strict;
use warnings;
use File::Find;
use diagnostics;
my $dir = "//vfg1msfs01ab/vfgcfs01\$/Regulatory Reporting/Access Database/";
my $filename = "RRED_Database";
my $fullname, my $ext;
opendir DH, $dir or die "Couldn't open the directory: $!";
while ($_ = readdir(DH)) {
my $ext = ".mdb";
if ((/$filename/) && ($_ ne $filename . $ext)) {
print "$_ \n";
unless (-e $dir . s/.mdb/.ldb/) {
s/.ldb/.mdb/;
print "I will kill $_ \n\n" ;
#unlink $_ or print "oops, couldn't delete $_: $!\n";
}
s/.ldb/.mdb/;
}
}