Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tar.pm  - краткая справка по модулю 
:(
    Опции темы
Alex
Дата 17.12.2004, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 162



Tar.pm - модуль для работы с tar архивами. Работает под Linux, Solaris, Windows. Насчет соляриса не знаю, а под Win и Linux он действительно работает smile и работают те два примера, что я приведу ниже. Говорят, что модуль глючит под MacOS, но автору модуля похоже на Mac глубоко наплевать, т.к. он написал, что мол нету у него Mac'a и ему проверять эту информацию вломак. 
Модуль весьма небольшой, не требует предварительной инсталляции и его можно подключать используя require. 

Теперь зархивируем чего-нибудь! Для этого напишем такой скриптик: 


Архивация:
Код

#!/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(), сказать подробнее. 
Его синтаксис: write('file.tar',$compressed) - первый параметр, это имя файла, в который мы и запишем наш архив. Возможно некоторых это и удивит, но этот параметр необязателен, можно его и опустить, в тако случае, наш архив возвращается как строковая переменная, которую можно будет применить по своему усмотрению. Второй параметр $compressed - тоже необязательный. Если он будет 'true', то будет осуществлено сжатие архива. Тут стоит быть осторожным, т.к. для включения этой опции необходимо чтоб у вас был инсталлирован модуль Zlib.pm (пакет Compress::Zlib ), если его не будет, а у вас будет включена компрессия, то Tar.pm будет ругаться. 

Теперь займемся разархивацией: 


Разархивация:
Код

#!/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. 


CPAN: Archiving Compression Conversion - А тут вы найдете все необходимое: модуль Tar.pm (Archive::Tar) о котором я разглагольствовал, а также множество других модулей, которые предназначены для работы с архивами (в том числе и для архива в ZIP формате) 

Информация подготовлена при помощи сайта: www.webscript.ru


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.