【发布时间】:2012-04-26 20:02:41
【问题描述】:
我是一个初学者 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/;
}
}
【问题讨论】:
标签: perl