私は初心者のPERLプログラマーで、私が手に入れられない障害を見つけました。私は一日中perl.orgでWeb投稿とSimon Cozensの本を読んで再読していますが、問題を解決できないようです。perl - ディレクトリを通ってfile.mdbを見つけ、file.ldbが見つからない場合にコードを実行する
私が意図しているのは、ディレクトリ内のファイルをループスルーすることです。同じファイル名に異なる拡張子が存在しないことを確認するために、ファイルに特定の文字列がある場合は、 (後で私はファイルの削除を実装するが、今は確実に動作させたい)。特に、私は.mdbファイルを探していて、関連付けられた.ldbのファイルがないことを確認した後、 .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
私はそれだけで返すようにしたい:
は今の私のコードは、この返されます。
私の現在のコードは以下の通りです。私は、ファイルをループするとき、私は唯一の私がしたい正確に何を見てることを保証するために繰り返し「次へ」ステートメントを使用したい...
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/;
}
}
ありがとうございます。私も答えを見つけました - あなたのコードはきれいに見えますが、下に掲載されています。あなたのコードに –
を入れてみましょう "次のif -f $ 1。" .ldb ";という行に" $ 1 "の初期化されていない値を使用しています。あなたは$ 1変数にベース名を保存する方法ですが、私はこれを完全に理解していません...私は研究しますが、私は行方不明ですか? –
私の答えはさらに7時間は投稿できません! ( –