Thread Archive::Zip Fehlermeldungen
(11 answers)
Opened by bianca at 2016-01-29 09:36 2016-01-29T12:01:36 GwenDragon Hatte ich nicht gesehen, tur mir leid. Du bist mal wieder die Aufmerksamste. DANKE DIR!!! Der Vollständigkeit halber zugunsten der Nachwelt kann man das mit folgendem Code testen :) Code (perl): (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 58 59 60 61 62 63 64 #!/usr/bin/perl use strict; use warnings; use 5.010; use Archive::Zip qw(:ERROR_CODES :CONSTANTS); if ($^O =~ /mswin/i) { $Archive::Zip::UNICODE = 1; } # Zufallsdateien erzeugen say '-' x 80; my $nr = 1; $nr ++ while -e "test$nr"; mkdir("test$nr"); for (my $fnr = 1; $fnr < 11; $fnr ++) { open(my $fh,'>',"test$nr/testdatei$fnr.txt"); my $count = int(rand((9000)+1))+100; for (my $x = 0; $x < $count; $x ++) { print $fh chr(int(rand((25)+1))+65); } close($fh); } # ZIPpen my $zip = Archive::Zip->new(); my $error = ''; Archive::Zip::setErrorHandler( # auskommentieren um das ursprüngliche sub{ # und jetzt gelöste Problem zu sehen chomp($_[0]); $error = "FEHLER '$_[0]'"; } ); mkdir('archive_zip_temp') if !-e 'archive_zip_temp'; Archive::Zip::tempFile('archive_zip_temp'); my @pfade = ("test$nr"); my $flag = 0; # 0=wilde Fehlermeldungen erzeugen / sonst 1 while (scalar @pfade) { my $pfad = shift @pfade; if (opendir(my $fh,$pfad)) { foreach my $file (sort {$a cmp $b} readdir $fh) { next if $file eq '.' || $file eq '..'; if (-d "$pfad/$file") { push @pfade,"$pfad/$file"; } else { if (open(my $t,'<',"$pfad/$file")) { close($t); my $file_member = $zip->addFile({ filename => "$pfad/$file", compressionLevel => 7, }); if (!$flag) { unlink("$pfad/$file"); # mitten im Vorgang Dateien entziehen... $flag = 1; } say "add '$pfad/$file'"; } else { say "$pfad/$file nicht lesbar" } } } } else { say "$pfad -> $! in ".__LINE__.' -> wird ignoriert, darum geht es im Moment nicht'; } } say '-' x 80; say "Endergebnis: ".$zip->writeToFileNamed('test.zip'); say '-' x 80; if ($error ne '') { say $error; } else { say 'OK'; } 10 print "Hallo"
20 goto 10 |