Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Archive::Zip архивирование с исключениями


Автор: birdfree 29.3.2010, 20:45
Доброго времени суток! 
есть такой код поковки директории:
Код

use Archive::Zip qw( :ERROR_CODES );
print "Directory backup...\n";
my $zip = Archive::Zip->new();
$zip->addTree($directory_for_backup1);
if ($zip->writeToFileNamed($backup_zip_file1) == AZ_OK ) {
    print "The Backup done.\n\n";
}
else {
    print "CAN'T WRITE BACKUP ZIP FILE ($backup_zip_file1): $!\n\n";
}
 
но возникла проблема, при архивации "на лету" нужно исключать файлы по маске, как в rar к примеру)) То есть мы задаем список с масками файлов, к примеру: *.bk; *name.if; *.*ls и еще у меня у меня вопрос нужно будет исключать файл типа *.$L я надеюсь что не каких проблем не будет)) 

Автор: amg 30.3.2010, 10:36
Не проверял, но, судя по perldoc Archive::Zip, можно сделать так:
Код
$zip->addTree($directory_for_backup1, '', sub {!/\.rar$/ && !/\.bk$/ && !/name\.if$/ && !/\.ls/ && !/\.\$L$/});

Автор: birdfree 30.3.2010, 15:18
amg, Большое вам спасибо! Все прекрасно работает. Только есть одно но, он чувствителен к регистру то есть *.BK и *.bk для него разные вещи.

Автор: amg 30.3.2010, 15:29
Цитата(birdfree @  30.3.2010,  15:18 Найти цитируемый пост)
Только есть одно но, он чувствителен к регистру то есть *.BK и *.bk для него разные вещи
Заменить /\.bk$/ на /\.bk$/i, и в этом случае не будет чувствителен к регистру. Аналогично для остальных.

Автор: birdfree 30.3.2010, 20:02
amg, И снова большое вам спасибо ))) Я просто в перле пишу максимум третий день 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)