私は会社の識別子、2桁の年、ランダムな数字のセット(例:00000217-12-00010.txt )。私は、毎年の提出書類の内容を、前年度に同じ会社から提出された提出書類と比較したいと思います(例えば、000002178-13-00010.txtと000002178-12-00005.txt)。各ファイルをループすると、前の年のファイルごとにファイルを識別できるので、両方のドキュメントを別々の文字列として読み取ることができますか?ディレクトリから類似したファイル名で文書を読む
use strict ;
use warnings ;
use autodie ;
use File::Find ;
### BEGIN BY READING IN EACH FILE ONE BY ONE. ###
################## LOOP BEGIN ##################
# Process every file with a `txt` file type
my $parent = "D:/Cleaned 10Ks" ;
my ($par_dir, $sub_dir);
opendir($par_dir, $parent);
while (my $sub_folders = readdir($par_dir)) {
next if ($sub_folders =~ /^..?$/); # skip . and ..
my $path = $parent . '/' . $sub_folders;
next unless (-d $path); # skip anything that isn't a directory
chdir($path) or die "Cant chdir to $path $!";
for my $filename (grep -f, glob('*')) {
#### FIND THE PRIOR YEAR'S CORRESPONDING FILING AND READ BOTH IN AS STRINGS###
ありがとうございます。 3つ目のコンポーネント($ rest)は、今年の出願と昨年の出願とでは異なるため、3つのコンポーネントに参加しても、前年の出願はできません。これはどうですか?私はすべてのファイル名のうち最後のコンポーネントを削除しようとすることができると思うので、これはもはや問題ではありませんが、私はそうしたくありません。 – Rick
@Rickああ、わかりました - しかし、最初の2つのコンポーネントは依然として昨年のファイル名を一意に決定しますか?はいの場合は、「安静」が簡単に見つかる必要があります。私はそれを修正するつもりだ(私は彼らが異なっていることを今見て、私は見ていない申し訳ありません) – zdim
@Rick修正。残りの質問 - ファイル名のベース( 'join ' - '、$ comp_id、$ year')は、去年の希望のファイル名である1つのエントリだけにマッチします。そのような方法で始まる名前を持つ他のファイル/ディレクトリがある場合、 'glob'が返すようにgrepするか、それ以外の場合はさらに処理します。 – zdim