Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > у кого есть опыт работы с архивами? |
Автор: igorold 28.4.2006, 09:32 | ||
Имеется куча архивов типа
из каждого надо открывать для обработки файл report т.е. надо выбрать архив, разархивировать его на сервере, обработать файл report и стереть разархивированные файлы (там есть подкаталоги) Подскажите, пожалуйста как это реализуется ... поиском именно такой задачи не нашел ... не посылайте на поиск .... |
Автор: nitr 28.4.2006, 10:00 |
![]() ![]() вот http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Extract-0.08.tar.gz качай а примеры http://search.cpan.org/~kane/Archive-Extract-0.08/lib/Archive/Extract.pm Добавлено @ 10:01 всегда http://search.cpan.org/search?query=tar&mode=all ищи ![]() |
Автор: GoodBoy 28.4.2006, 10:12 | ||
igorold, как вариант, если работаешь под *nixами, используй системные вызовы в обратных кавычках `` т.е.:
|
Автор: nitr 28.4.2006, 10:24 |
Вот http://search.cpan.org/~softdia/Archive-TarGzip-0.03/lib/Archive/TarGzip.pm примеры.. их много на СПАНЕ ![]() |
Автор: igorold 28.4.2006, 13:13 | ||||
похоже пакет криво встал - выдается ошибка, когда я его подключаю по:
|
Автор: nitr 28.4.2006, 15:49 |
указано, что надо установить IPC::Cmd |
Автор: igorold 2.5.2006, 06:41 | ||
Ну да, при установке такое сообщение было:
а где взять эти пакеты? |
Автор: nitr 2.5.2006, 11:33 |
http://search.cpan.org |
Автор: igorold 2.5.2006, 12:37 | ||||||
nitr , спасибо ... вот пришлось установить такие пакеты:
.... процесс идет, теперь очередная ошибка при выполнении :
вот эта die и выдает ошибку:
|
Автор: igorold 2.5.2006, 13:36 |
может этим никто не занимался и ни у кого нет работающего примера????? самостоятельно изучать это, конечно хорошо .... но сейчас мне необходим образец .... подайте, кто может .... на cpan нет конкретного примера .... только в общем .... что-то до меня не доходит .... поэтому жду пример ... поскребите по сусекам ... пожалуйста ... ![]() ![]() ![]() |
Автор: sharq 2.5.2006, 16:21 |
igorold, используй модуль Archive::Tar. Очень легко и просто!![]() |
Автор: igorold 3.5.2006, 06:13 |
Так ведь если есть модуль Archive::Extract, должен же он работать .... может найдется опытный человек, который с ним работал ... у меня пока есть что делать, как приспичит, может на другой модуль посмотрю ... |
Автор: nitr 3.5.2006, 11:07 | ||
igorold, для установки модуля введи: >perl -MCPAN -e 'install Archive::Extract' на все вопросы можно ответить yes ![]() Самый лучший модуль http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-0.23.tgz вот пример:
|
Автор: igorold 3.5.2006, 12:54 | ||||
опять ошибка:
|
Автор: nitr 3.5.2006, 13:11 |
я не могу съэмулировать твою ошибку ![]() твой код рабочий, проверил на 3 компах. Даже если неопределена $UpArhiv, то он выдаёт другую ошибку: Could not create filehandle for '': No such file or directory! at D:\1.pl line 0 No files found for at D:\1.pl line 11 Можешь прикрепить сюда один из файликов в переменной $UpArhiv |
Автор: igorold 3.5.2006, 13:24 | ||
Такие сообщения у меня были при установке ... может что-то криво встало?
Добавлено @ 13:36 а как прикрепить файлик, не могу найти ... |
Автор: nitr 3.5.2006, 13:58 | ||||
Ой... я и сам не заметил, что не прикрепить ![]() качать http://search.cpan.org/CPAN/authors/id/K/KA/KANE/Archive-Tar-1.29.tar.gz я пока не понял, как тебе дал на версию 0.23 Привожу логи... не обращай внимания, что винда... скачай модуль по той ссылке и должно всё работать ;)
|
Автор: igorold 3.5.2006, 14:23 | ||||
ОК, переустановил новую версию ....
и печатается строка:
т.е. переменная $fl == 0 ???? не пойму - ошибок не выдается, результата не вижу ... , в каталоге /unzipped ничего не появляется .... а можно расширить пример, как дальше с этим файлом проработать? |
Автор: nitr 3.5.2006, 16:37 | ||
$tar->list_files(); - это массив ![]()
а твой 0 это скалярная величина массива ![]() ![]() ![]() Добавлено @ 16:39 значит, что Архив пустой. |
Автор: igorold 4.5.2006, 07:10 | ||||||||
в архиве содержаться следующие файлы:
немного переделал:
получаем на экране:
т.е. $fl[0] - пустое имя файла .... имя архива я получаю:
если я выбираю importfile, то файл открывается и я его обрабатываю нормально ... следующий этап - я хотел брать архив и уже из него вытаскивать этот файл, т.е. вместо файла я выбираю архив , но дальше ничего не работает ... подскажите, что не так ... кто-то же работал с архивом .... поэтому мне проще переработать РАБОТАЮЩИЙ пример ... но когда сам находишь ляпу, опыта, конечно больше ... но я хотел бы использовать ВАШ опыт .... |
Автор: nitr 4.5.2006, 09:37 | ||
igorold, просьба выложить где-нить один файлик архив, дай ссылку, я дам пример работающий с твоим архивом. Такое чувство что он не тар. Все твои действия верны. Так как у тебя таг+гзип, то может сначала установить модуль http://search.cpan.org/CPAN/authors/id/T/TO/TOMHUGHES/IO-Zlib-1.04.tar.gz Добавлено @ 09:38 так сказано мане ;)
|
Автор: igorold 4.5.2006, 11:33 | ||
IO-Zlib-1.04 я установил, при установке я установил
может тебе на мыло сбросить? .... я пока не знаю, где бы ссылку сделать ... |
Автор: nitr 4.5.2006, 16:02 | ||||
1.pl
|
Автор: igorold 5.5.2006, 06:47 | ||||
Попробовал все это в отдельном файле - работает!!!! А в моем скрипте нет!!! ![]() Значит так, структура скрипта такая: есть 2 файла: index.pl
ComplexDB.pm
и не печатается ни одного имени файла ..... может что-то из USE дает такую проблему .... ![]() |
Автор: igorold 5.5.2006, 07:29 | ||
Кажется работает, надо было в переменную так писать:
|
Автор: igorold 5.5.2006, 08:00 | ||||||||||
Еще я вычислил, что если архив не находится в каталоге скрипта, то он не разархивируется (линукс, мозилла) из-за этого видимо я не мог ничего добиться. может из-за того, что я передаю имя файла как :
но если я передаю так:
то выдается ошибка:
где $UpArhiv - я выбираю так:
в скрипте:
|