次のことができます。これにより、ユーザーは独自のディレクトリを指定できます。ユーザーがディレクトリを指定しない場合は、デフォルトで指定された場所になります。
この例は、 , の使用を示しておりopendir、readdirディレクトリ内のすべてのファイルを@files配列に格納し、'.txt' で終わるファイルのみを配列に格納し@keysます。while ループにより、ファイルへのフル パスが配列に格納されます。
これは、「テキスト ファイル」が「.txt」サフィックスで終わることを前提としています。「ファイルのクリーニング」が何を意味するのかよくわからないので、それが役立つことを願っています。
use feature ':5.24';
use File::Copy;
my $dir = shift || "/some/default/directory";
opendir(my $dh, $dir) || die "Can't open $dir: $!";
while ( readdir $dh ) {
push( @files, "$dir/$_");
}
# store ".txt" files in new array
foreach $file ( @files ) {
push( @keys, $file ) if $file =~ /(\S+\.txt\z)/g;
}
# Move files to new location, even if it's across different devices
for ( @keys ) {
move $_, "/some/other/directory/"; || die "Couldn't move files: $!\n";
}
詳細については、File::Copy の perldoc を参照してください。