私が書いたプログラムは、ディレクトリとサブディレクトリ内のすべてのファイルを 1 行ずつ調べて、$counter を含むいくつかのコマンドを実行します。すべての行が次のようになる .txt ファイルを作成したいと思います。
<file name> <$counter in the beginning of the file>
たとえば、ファイル a に 3 つのファイル a.txt 、 b.txt 、および c.txt がある場合、カウンターはファイル b で 10 をカウントし、ファイル b で 20 をカウントし、ファイル c で 30 をカウントします。ファイルは次のようになります。
a.txt 0
b.txt 10
c.txt 20
私のプログラムは次のようになります。
use strict;
use warnings;
use File::Find;
my $dir = "C:/New Folder";
open (MYFILE, '>>data.txt');
# fill up our argument list with file names:
find(sub { if (-f && /\.[c]$/) { push @ARGV, $File::Find::name } }, $dir);
$^I = ".bak"; # supply backup string to enable in-place edit
foreach $argvv(@ARGV)
{
while (<>)
{
if ($prev_arg ne $argvv)
{
print MYFILE "$argvv $counter\n";
$prev_arg = $argvv;
}
#some unrelated line by line code here
close (MYFILE);
}
}
私がやろうとしていたのは、ファイルの処理が終了して別のファイルを開始するたびに、プログラムにファイル名とカウンターを出力させることです。
取得した data.txt ファイルは、最初のファイルの名前と、ディレクトリ内の各ファイルの各行に出力されたカウンターです。言うまでもなく、私は Perl の初心者なので、助けていただければ幸いです。
ありがとう :)