Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5411[/thread]

Modul Archive::Zip , aber kein *.zip !!!: Please help...

Leser: 1


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Gast Gast
 2004-03-25 11:38
#48688 #48688
Hi @all,
hab ein Problem bei dem ich schon längere Zeit hänge...
Wollte die Zip-Funktion von Dateien in Perl nutzen, hatte aber schon bei der installation des Modules offline Probleme.
Habe nen xampp apache Server offline laufen ( c:\xampp\... )
und zusätzlich ActiveState Perl ( c:\Perl\... ), der als Interpreter von Perl Skripten genutzt wird.
Hab mir das Modul von ActiveState als *.zip heruntergeladen und offline installiert:
Dos-Konsole :  ppm
                   install Archive-Zip.ppd
                   query ( und das Archive-Zip 1.09 wird    angezeigt )

Jetzt hab ich folgenden Code ausprobiert:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!c:\Perl\bin\perl.exe

use warnings;

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";print "<html>\n";
print "\n\n";
print "<html>\n";

print "\n";
print "<head>\n";
print "<title>TEST MODULE ARCHIVE::ZIP</title>\n";
print "</head>\n";
print "<body aLink=\"\#000000\" bgColor=\"\#F0F2FF\" bottomMargin=\"0\" leftMargin=\"0\" link=\"\#000000\"\n";
print "rightMargin=\"0\">\n";
print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test 1 zum erzeugen von Zip-Files !\n";

use Archive::Zip;

my $pfad = "C:\xampp\htdocs\keys";

chdir $pfad or die "chdir nach '$pfad' nicht moeglich: $!";

my $zip = Archive::Zip->new();

$zip->addFile("C:\xampp\htdocs\cgi-bin\newuser.pl");
$zip->addfile("C:\xampp\htdocs\cgi-bin\edituser.pl");

my @Dateien;
find( sub {push @Dateien, $File::Find::name},"./Check/" );

for (@Dateien) {
  if (-d) {
     $zip->addDirectory($_);
  }
  else {
     $zip->addFile($_);
  }
}

my $zipname = 'check_V';
{
  open CHECK, './Check/Check.pm' or die "Kann './Check/Check.pm' nicht oeffnen: $!";
  my @checkinhalt = <CHECK>;
  close CHECK or die "Kann './Check/Check.pm' nicht schliessen: $!";
  (my $v) = grep s~^\s+\$Version\s*=\s*'([.\d]+[a-z]?)'\s*;\s*$~$1~, @checkinhalt;
  $zipname .= $v;
}
$zipname .= '.zip';

$zip->writeToFileNamed($zipname);


print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Variablentest\n";
print "\n";
print "</body>\n";
print "</html>\n";


Es erzeugt aber keine .zip Files . Hab auch schon in der Hilfe vom Modul nachgeschaut, aber nix gefunden. Hat das  jemand mal umgesetzt???
Wäre für Hilfe dankbar....

MFG
crucho

PS : Hat nmake damit was zu tun ?
Rambo
 2004-03-25 11:54
#48689 #48689
User since
2003-08-14
803 Artikel
BenutzerIn

user image
also ich mach das so
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $zip = Archive::Zip->new();
chdir $log_dest or die "chdir $log_dest: $!";

opendir(DIR,$log_dest) or die "Can't open the current Directory: $!\n";
my @names = readdir(DIR) or die "Unable to read current dir:$!\n";

foreach my $fileName (@names) {
if ($fileName =~ /.LOG/) {
$zip->addFile($fileName);
}
}
my $zip_name = "$Short$srv$zeit_str.zip";
print "\nZipping Files to $zip_name\n\n";
$zip->writeToFileNamed("$zip_name");

vermute das bei dir das opendir fehlt?
fürti rambo
renee
 2004-03-25 12:04
#48690 #48690
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=crucho01,25.03.2004, 10:38]
Code: (dl )
1
2
3
4
my $zip = Archive::Zip->new();

$zip->addFile("C:\xampp\htdocs\cgi-bin\newuser.pl");
$zip->addfile("C:\xampp\htdocs\cgi-bin\edituser.pl");
[/quote]
Ersetz die " mal durch ', da \n sonst zu einem Newline wird...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2004-03-25 12:25
#48691 #48691
Hi,
hab erstmal die " ersetzt, geht aber trotzdem nicht...
Und das Beispiel von Rambo funktioniert bei mir auch ned.
Irgendwie weigert das Modul sich nur ansatzweise ne .zip zu erzeugen.
Das alles braucht doch eine directory-Angabe, wo er nach Dateien zum zippen sucht und ein Ausgabedirectory , wo die Zips hingespeichert werden, oder ???
Hab im Beispiel von Rambo DIR durch 'Pfadangabe' ersetzt, geht aber auch ned...
Wenn ich in der ppm  "query" eingebe, zeigt es mir alle aktive Module an oder muss ich das erst aktivieren???
Oder brauch ich vielleicht noch zusätzlich was ( nmake oder make::File ) damit das geht???

....Naja
renee
 2004-03-25 12:29
#48692 #48692
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mach mal noch Fehlerausgaben rein, also:
Code: (dl )
1
2
3
4
5
my $zip = Archive::Zip->new() or die $!;
[...]
$zip->addFile('C:\xampp\htdocs\cgi-bin\newuser.pl') or die $!;
[...]
$zip->writeToFileNamed($zip_name) or die $!;


Das DIR von Rambo musst Du schon lassen. Das ist keine Pfadangabe sondern ein FILEHANDLE.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Rambo
 2004-03-25 12:48
#48693 #48693
User since
2003-08-14
803 Artikel
BenutzerIn

user image
das hier geht! hab getestet!
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use Archive::Zip;
use strict;

my $log_dest = "C:\\TEMP\\ZIP";

my $zip = Archive::Zip->new();
chdir $log_dest or die "chdir $log_dest: $!";

opendir(DIR,$log_dest) or die "Can't open the current Directory: $!\n";
my @names = readdir(DIR) or die "Unable to read current dir:$!\n";

foreach my $fileName (@names) {
if ($fileName =~ /.LOG/) {
$zip->addFile($fileName);
}
}
my $zip_name = "test.zip";
print "\nZipping Files to $zip_name\n\n";
$zip->writeToFileNamed("$zip_name");
Gast Gast
 2004-03-25 14:16
#48694 #48694
Also wenn Rambos Skript geht... dann müsste es doch auch bei mir laufen.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!c:\Perl\bin\perl.exe

use warnings;
use Archive::Zip;

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";print "<html>\n";
print "\n\n";
print "<html>\n";

print "\n";
print "<head>\n";
print "<title>TEST MODULE ARCHIVE::ZIP</title>\n";
print "</head>\n";
print "<body aLink=\"\#000000\" bgColor=\"\#F0F2FF\" bottomMargin=\"0\" leftMargin=\"0\" link=\"\#000000\"\n";
print "rightMargin=\"0\">\n";
print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Test 5 zum erzeugen von Zip-Files $filename!\n";

my $log_dest = "c:\\TEMP\\ZIP";

my $zip = Archive::Zip->new();
chdir $log_dest or die "chdir $log_dest: $!";

opendir(DIR,$log_dest) or die "Can&acute;t open the current Directory: $!\n";
my @names = readdir(DIR) or die "unable to read the current dir:$!\n";

foreach my $filename (@names) {
if ($filename =~ /.LOG/) {
$zip->addFile($fileName);
}
}
my $zip_name = "test.zip";
print "\nZipping Files to $zip_name\n\n";
$zip->writeToFileNamed("$zip_name");


print "\n";
print "</body>\n";
print "</html>\n";


Geht aber nicht!!
Die zip sollte doch hier in c:\temp\ geschrieben werden, oder??
Irgendwas fehlt mir noch...
Also ich führe das Skript Modultest5.pl auf Winxp mit IE5.5 aus. Wenn er das Modul nicht finden würde , gebe es doch nen Servererror im IE...
Noch andere Ideen??
Brauch ich da noch Makefile oder so was ???
Gast Gast
 2004-03-25 14:22
#48695 #48695
Ohhh mann, danke es geht jetzt.
Wollt das ganze erst in ein Skript einbauen und offline die Funktion testen...
Danach sollte das auf ner Unix Kiste laufen. Muss ich da im Bezug auf Modul "Archive::Zip" was beachten?
Läuft das dann noch oder brauch ich ein anderes Modul?
Kann ich den Modulcode direkt einbauen oder muss ich der Serveradmins beauftragen das Modul zu installieren ??

Vielen Dank für eure Hilfe bisher !!!
Rambo
 2004-03-25 14:29
#48696 #48696
User since
2003-08-14
803 Artikel
BenutzerIn

user image
bist ja fast richtig!
wenn du (das kam von den hisigen mitgliedern)
use strict; ver wendest wärst du auch selbst drauf gekommen :-)
du must mal nach der schreibweise der Varialben schauen!
speziell $fileName das hast mal kein mal gruss etc.
geschrieben! dann geht es :-)

fürti rambo
Gast Gast
 2004-03-25 14:42
#48697 #48697
wenn ich oben noch use strict; einfüge gibt es immer nen Serverfehler:
Die Anfrage kann nicht beantwortet werden da
Premature end of script headers: Modultest.pl

Hab ich das Modul nicht standartmässig bei ActiveState ???

PS. Deinen letzten Satz hab ich ned verstanden....
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2004-03-25 11:38.