Perlを初めて使うと、3回しか使用されません。私は親ディレクトリからファイルとサブフォルダを削除する必要があります。私は-Mを使う前にファイルを削除しましたが、サブフォルダを使ったことはありません。下の詳細を実行すると、サブフォルダからファイルが削除されず、サブフォルダに1週間以上前のファイルが存在します。テストメッセージは、サブフォルダ内のすべてのファイルに対して 'myAge'がゼロであることを示します。私は何が欠けているか分からない。どんな援助も非常に高く評価されるだろう。Perlを使用してサブフォルダとファイルを日数で削除します
msg ("\n");
msg ("Start: \n");
my $parent = 'C:/temp/XYZ';
my ($par_dir, $sub_dir);
opendir($par_dir, $parent);
msg " parent is $parent \n";
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
next unless (-M $subfolder < 7 );
msg " subfolder is $sub_folders is old enough to delete \n";
opendir($sub_dir, $path);
while (my $file = readdir($sub_dir)) {
# for testing
my $myAge = (-M $file) ;
msg " age ... $myAge __ file ... $file\n" ;
if (-M $file > 7 ) {
msg " going to delete this file... $file \n";
} else {
msg " will keep this file not old enough $file\n";
}
}
closedir($sub_dir);
}
closedir($par_dir);
'msg()'関数はどこから来たのですか? – simbabque
(-M $ subfolder <7); '(-M $ path <7);'を除いて 'next 'にしないでください。 '-M $ file'は' -M "$ path/$ file" 'ですか? ['readdir'](http://perldoc.perl.org/functions/readdir.html)はファイルまたはディレクトリ名(親ディレクトリなし)のみを返します。 – PerlDuck
msg()はログファイルに書き込みます。以前は – Fondah