Я хочу архивировать все txt-файлы с помощью File :: Find, удалять исходные файлы и удалять пустые каталоги.Perl Archive :: Tar
У меня возникли трудности с переименованием файлов с помощью $ $ tar-> rename(); ' потому что я хотел бы удалить их из их полных имен путей и использовать только родительский каталог/*. txt, но все, что я пытаюсь переписать, переименовывает только один файл.
Я не знаю, где подходящее место для выполнения функции «unlink».
Спасибо.
use strict;
use warnings;
use Archive::Tar;
use File::Find;
use File::Basename;
my $dir = "E:/";
my @files =();
find(\&archive, $dir);
sub archive {
/\.txt$/ or return;
my $fd = $File::Find::dir;
my $fn = $File::Find::name;
my $folder = basename($fd);
my $file = $_;
push @files, $fn;
my $tar = Archive::Tar->new();
$tar->add_files(@files);
$tar->rename($fn, $folder."\\".$file);
$tar->write($fd.'.tar');
unlink $fn;
finddepth(sub{rmdir},'.');
}
Великое решение. Это именно то, что я искал. Неограниченное спасибо. – thebourneid 2010-12-01 04:06:42