そこで、実際に使用できるPerlの学習を支援するための小さなプロジェクトを思いつきました。アイデアは、2つのディレクトリ内のファイル変更日のリストを比較することです。1 FTPから、1つはローカルから、ローカルからのものが新しい場合はアップロードします(この部分は後で処理できます)。FTPからディレクトリを読み取り、ファイルを取得するための個別のスクリプトを作成しました(これらを組み合わせて、現時点でいじくり回す予定です)。もう1つは、2つのディレクトリ(ファイルリストは配列内にあります)にあるファイルのリストを比較します。ここで問題が発生します。2つのディレクトリを比較することができます。同じ名前のファイルを比較する方法を理解できないようです。1つのディレクトリにのみ存在するファイルがある場合、そのファイルを同じ配列位置にある別のファイルと比較します。
これは、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
}
今のところこれを機能させることができれば、私はそれを自分がやりたいようにゆっくりと変更することができます。
あなたたちが私に提供できるどんな援助にも感謝します。