構成ファイルを読み取って、ファイルに記載されているサイズでそこにリストされているディレクトリを破棄しようとしています。これまでのところ、私はこれを持っています-
open FILE, 'C:\reports\config.txt' or die $!;
my $size_req;
my $path;
my $sub_dir;
my $count;
my @lines = <FILE>;
foreach $_ (@lines)
{
my @line = split /\|/, $_;
if ($line[0] eq "size")
{
$size_req= $line[1];
$size_req= ">".$size_req*1024;;
}
if ($line[0] eq "path")
{
$path= $line[1];
}
if ($line[0] eq "directories")
{ my $aa;
my $siz_two_digit;
my $sub_dir;
my $i;
my $array_size=@line;
**for($i=1; $i < $array_size; )**
{
$sub_dir=$line[$i];
print $sub_dir;
print "\n";
print $path;
print "\n";
my $r1 = File::Find::Rule->directory
->name($sub_dir)
->prune # don't go into it
->discard; # don't report it
my $fn = File::Find::Rule->file
->size( $size_req );
my @files = File::Find::Rule->or( $r1, $fn )
->in( $path);
print @files;
undef @files;
print @files;
$i++;
print "\n";
print "\n";
}
}
}
for ループの問題は、配列から破棄されるすべてのサブディレクトリを問題なく格納することです。ただし、破棄する最初のディレクトリの名前を読み取ると、残りのサブディレクトリを認識せず、それらも一覧表示します。2 番目の値に移動すると、前の値は無視され、それもリストされます。
File|::Find::Rule が一度に配列を取り、コードが構成ファイルの行全体を一度に考慮するかどうかを知っている人はいますか? または他のロジック?
ありがとうございました