Вы можете сделать следующее, что позволяет пользователю указать свой собственный каталог, или, если пользователь не указал каталог, по умолчанию он назначается местоположению.
В примере показано использование 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";
}
См. perldoc File :: Copy для получения дополнительной информации.