私は初心者のPERLプログラマーですが、手に負えない問題に遭遇しました。私はperl.orgでウェブ投稿とSimonCozensの本を一日中読んだり読み直したりしていますが、問題を解決できないようです。
以下のコードでの私の意図は、ディレクトリ内のファイルをループし、ファイルに特定の文字列がある場合、同じファイル名が別の拡張子で存在しないことを確認し、存在しない場合は、ファイル名(後でファイルの削除を実装しますが、今のところは確実に機能するようにします。)具体的には、.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ファイルの後に「Iwillkill...」のみを返すようにします。
私の現在のコードは以下の通りです。私は提供された助けに感謝します...
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/;
}
}