Tar.pm: не Zipом единым!Это не перевод документации к модулю Tar.pm (которая в общем-то мала, краткое описание 11 доступных методов - вот и вся документация), а скорее "краткая записка для лентяев и всех интересующихся", т.к. если бы сей вопрос вас жутко интересовал, то вы наверняка заглянули бы в CPAN архив и подобрали парочку соответствующих модулей. Ну и пишу я это от нечего делать - жду пока ;) сосиски сварятся. Потому приступим сразу к делу!
Tar.pm - модуль для работы с tar архивами. Работает под Linux,
Solaris, Windows. Насчет соляриса не знаю, а под Win и Linux он
действительно работает :) и работают те два примера, что я приведу
ниже. Говорят, что модуль глючит под MacOS, но автору модуля похоже на
Mac глубоко наплевать, т.к. он написал, что мол нету у него Mac'a и
ему проверять эту информацию вломак.
Теперь зархивируем чего-нибудь! Для этого напишем такой скриптик:
Архивация: #!/usr/bin/perl use Archive::Tar; my $tar = Archive::Tar->new(); $tar->add_files("file1", "file2", "file3");#Список файлов $tar->write('files.tar'); В общем то и все. В результате выполнения сценария вы получите файлик files.tar, в котором будут находиться файлы: file1, file2, file3
Метод add_files(@file_names) - должен получить получить список файлов,
и их он помещает в архив, который хранится в памяти.
Ну а метод write('file.tar') записывает архив, содержащийся в памяти,
непосредственно в файл file.tar, т.е. наш архивчик теперь хранится не
только в памяти, но и на диске, чего, собственно, мы и хотели.
Думаю, стоит про метод write(), сказать подробнее.
Теперь займемся разархивацией:
Разархивация: #!/usr/bin/perl use Archive::Tar; my ($tar, @files); $tar = Archive::Tar->new(); $tar->read('files.tar'); @files=$tar->list_files(); $tar->extract(@files);В результате выполнения сценария мы получим то, что и хотели получить: помимо files.tar у нас будут иметься и file1, file2 и т.д., т.е. содержимое архива. read('files.tar',$compressed) - первый параметр имя файла, второй опция копрессии (необязательный параметр), о компрессии (сжатии) я говорил выше. В результате выполнения этого метода наш архив files.tar считывается в память. list_files() - этот метод возвращает нам список имен файлов, содержащихся в архиве, который, в свою очередь, содержится в памяти. extract(@files) - сей метод получает список имен файлов и занимается их разархивацией. Если необходимо, то он создает субдиректории (например, если имя файла было 'myfiles/file1', то будет создана директория myfiles). Заметьте, что из архива необязательно извлекать все содержащиеся в нем файлы - можно и какой-нибудь определенный, например только file1. В общем, я все. Вода для сосисок уже выкипела, возможно, кому-то все выше написанное окажется полезным - иначе я просто зря израсходовал электроэнергию... Хочу напомнить, что я рассказал не про все методы - загляните в документацию модуля, не поленитесь, там есть еще над чем поизвращаться. яндекс ( http://yandex.ru ) |