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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> у кого есть опыт работы с архивами? *.tgz 
V
    Опции темы
igorold
Дата 3.5.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Такие сообщения у меня были при установке ... может что-то криво встало?
Код

perl Makefile.PL

Writing Makefile for Archive::Tar

make

cp bin/ptar blib/script/ptar
/usr/bin/perl5.8.5 "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/ptar
Manifying blib/man3/Archive::Tar::Win32.3pm
Manifying blib/man3/Archive::Tar.3pm

make test

PERL_DL_NONLAZY=1 /usr/bin/perl5.8.5 "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01_Tar....Compression not available at /var/tmp/Archive-Tar-0.23/blib/lib/Archive/Tar.pm line 13
t/01_Tar....ok
        1/12 skipped: Can not do compression checks, 1/12 unexpectedly succeeded
All tests successful (1 subtest UNEXPECTEDLY SUCCEEDED), 1 subtest skipped.
Files=1, Tests=12,  0 wallclock secs ( 0.14 cusr +  0.01 csys =  0.15 CPU)

make install

Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Archive/Tar/.packlist
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod


Добавлено @ 13:36 
а как прикрепить файлик, не могу найти ...  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 3.5.2006, 13:58 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Ой... я и сам не  заметил, что не прикрепить smile Выложи где-нить и дай ссылку.
качать тут
я пока не понял, как тебе дал на версию 0.23 

Привожу логи... не обращай внимания, что  винда... скачай модуль по той ссылке и должно всё работать ;)
Код
D:\Archive-Tar-1.29>Makefile.PL

Archive::Tar comes with a utility called 'ptardiff' which lets you run diffs aga
inst tar archives.

However, this utility requires you to have Text::Diff installed.

To add Text::Diff as a prerequisite, please supply the '-d' option when invoking
 this Makefile.PL.

Checking if your kit is complete...
Looks good
Writing Makefile for Archive::Tar


Код
D:\Archive-Tar-1.29>nmake test

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

cp lib/Archive/Tar/Constant.pm blib\lib\Archive\Tar\Constant.pm
cp lib/Archive/Tar.pm blib\lib\Archive\Tar.pm
cp lib/Archive/Tar/File.pm blib\lib\Archive\Tar\File.pm
        E:\Archive\Perl\bin\perl.exe -MExtUtils::Command -e cp bin/ptardiff blib
\script\ptardiff
        pl2bat.bat blib\script\ptardiff
        E:\Archive\Perl\bin\perl.exe -MExtUtils::Command -e cp bin/ptar blib\scr
ipt\ptar
        pl2bat.bat blib\script\ptar
        E:\Archive\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harnes
s(0, 'blib\lib', 'blib\arch')" t\00_setup.t t\01_use.t t\02_methods.t t\03_file.
t t\04_resolved_issues.t t\99_clean.t t\99_pod.t
t\00_setup..............ok
t\01_use................ok
t\02_methods............# No long filename support - long filename extraction di
sabled
t\02_methods............ok
t\03_file...............ok
        11/178 skipped: Attributes defined, may not be plainfile
t\04_resolved_issues....ok
t\99_clean..............ok
t\99_pod................skipped
        all skipped: Test::Pod v0.95 required for testing POD
All tests successful, 1 test and 11 subtests skipped.
Files=7, Tests=729,  4 wallclock secs ( 0.00 cusr +  0.00 csys =  0.00 CPU)
 


--------------------
PM   Вверх
igorold
Дата 3.5.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



ОК, переустановил новую версию .... 
Код

            my $tar = Archive::Tar->new;
            $tar->read("$UpArhiv", 1);
            $tar->extract('dbreport','/unzipped');
            my $fl = $tar->list_files();

            my %FormData = ( ErrorText => "Смотрим результат ($UpArhiv) : $fl" );
            return $self->tt_process('importerror.tmpl', \%FormData);

и печатается строка: 
Код

Смотрим результат (kazan-31.03.06_21.00.tgz) : 0

т.е. переменная $fl == 0 ????
не пойму - ошибок не выдается, результата не вижу ... , в каталоге /unzipped ничего не появляется .... 

а можно расширить пример, как  дальше с этим файлом проработать? 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 3.5.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



$tar->list_files(); - это массив smile

Код
...
my @fl = $tar->list_files();
print "Files in archive:\n";
foreach my $file (@fl) {
  print "\t$file\n";
}


а твой 0 это скалярная величина массива smile , грубо говоря длина smile т.е. в нём ничего нет smile

Добавлено @ 16:39 
значит, что Архив пустой. 


--------------------
PM   Вверх
igorold
Дата 4.5.2006, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



в архиве содержаться следующие файлы:
Код

/linux-log                                        │      0│Мар 30 09:30│
/pilot                                            │      0│Мар 30 09:30│
 dbreport                                         │    357│Май  3 16:31│
 fm-errors                                        │   3401│Мар 30 09:29│
 fm-reports                                       │    226│Май  3 16:29│
 pap_err                                          │     88│Май  3 16:29│
 sys-stat

немного переделал:
Код

            my $tar = Archive::Tar->new;
            $tar->read("$UpArhiv", 1);
            $tar->extract();
            my @fl = $tar->list_files();
            my %FormData = ( ErrorText => "Смотрим результат ($UpArhiv) : $fl[0]" );

получаем на экране:
Код

Смотрим результат (k-30.03.06_07.00.tgz) :

т.е. $fl[0] - пустое имя файла .... 
имя архива я получаю:
Код

    my $UpFile  = $self->query()->upload('importfile');
    my $UpArhiv = $self->query()->upload('importarc');

если я выбираю importfile, то файл открывается и я его обрабатываю нормально ...
следующий этап - я хотел брать архив и уже из него вытаскивать этот файл, т.е. вместо файла я выбираю архив , но дальше ничего не работает ...

подскажите, что не так ... кто-то же работал с архивом .... 
поэтому мне проще переработать РАБОТАЮЩИЙ пример ... но когда сам находишь ляпу, опыта, конечно больше ... 
но я хотел бы использовать ВАШ опыт ....  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 4.5.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



igorold, просьба выложить где-нить один файлик архив, дай ссылку, я дам пример работающий с твоим архивом. Такое чувство что он не тар. Все твои действия верны. Так как у тебя таг+гзип, то может сначала установить модуль IO::Zlib

Добавлено @ 09:38 
так сказано  мане ;)
Цитата

Archive::Tar provides an object oriented mechanism for handling tar files. It provides class methods for quick and easy files handling while also allowing for the creation of tar file objects for custom manipulation. If you have the IO::Zlib module installed, Archive::Tar will also support compressed or gzipped tar files.

An object of class Archive::Tar represents a .tar(.gz) archive full of files and things.
 


--------------------
PM   Вверх
igorold
Дата 4.5.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



IO-Zlib-1.04  я установил, при установке я установил 
Код

Compress-Zlib-1.41
IO-Zlib-1.04
Text-Diff-0.35

может тебе на мыло сбросить? .... я пока не знаю, где бы ссылку сделать ...  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 4.5.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



1.pl
Код
#!perl
use Archive::Tar;

my $tarf = 'k-30.03.06_07.00.tgz';
my $tar = Archive::Tar->new();
$tar->read($tarf, 1);
my @fl = $tar->list_files();
foreach my $file (@fl) {
  print "\t", $file,"\n";
}


Цитата
D:\>1.pl
        dbreport
        fm-errors
        fm-reports
        linux-log/
        linux-log/syslog
        linux-log/messages
        linux-log/kernel_err
        linux-log/daemons_err
        linux-log/apcupsd
        pap_err
        pilot/
        pilot/pilot.log
        sys-stat
 


--------------------
PM   Вверх
igorold
Дата 5.5.2006, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Попробовал все это в отдельном файле - работает!!!!
А в моем скрипте нет!!!  smile 

Значит так, структура скрипта такая: есть 2 файла:
index.pl
Код

#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use lib "/var/www/ComplexDB";
use ComplexDB;
my $app = ComplexDB->new();
$app->run();

ComplexDB.pm 
Код

package ComplexDB;

use base 'CGI::Application';
use CGI::Application::Plugin::TT;
use CGI::Application::Plugin::DBH (qw/dbh_config dbh/);
use strict;
use Digest::SHA1 qw (sha1_base64);
use Date::Manip;
use Archive::Tar;
....................................................
my $Comm = "Смотрим результат ($UpArhiv) :";
my $tarf = 'k-30.03.06_07.00.tgz';
my $tar = Archive::Tar->new();
$tar->read($tarf, 1);
my @fl = $tar->list_files();
foreach my $file (@fl) {
 # print "\t", $file,"\n";
  $Comm .= "\t", $file,"\n";
}
            my %FormData = ( ErrorText => " $Comm" );
            return $self->tt_process('importerror.tmpl', \%FormData);

и не печатается ни одного имени файла ..... может что-то из USE дает такую проблему ....  smile   

Это сообщение отредактировал(а) igorold - 5.5.2006, 06:47


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
igorold
Дата 5.5.2006, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Кажется работает, надо было в переменную так писать:
Код

$Comm .= "\t". $file."\n";
 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
igorold
Дата 5.5.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Еще я вычислил, что если архив не находится в каталоге скрипта, то он не разархивируется (линукс, мозилла)
из-за этого видимо я не мог ничего добиться. может из-за того, что я передаю имя файла как :
Код

my $tarf = "$UpArhiv";

но если я передаю так:
Код

my $tarf = $UpArhiv;

то выдается ошибка:
Код

Error Undefined subroutine Fh::read at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Archive/Tar.pm line 251

где $UpArhiv - я выбираю так:
Код

<input type="file" name="importarc">

в скрипте:
Код

my $UpArhiv = $self->query()->upload('importarc');
 


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


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

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


 




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


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

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