use Archive::Extract; my @zipdata=&all_data("LOG/","zip","zip"); #Namen der vorhandenen Zipdateien im Ordner LOG my $zipfile2; my $count=0; $Anzzipdata = @zipdata; #Anzahl der zu durchsuchenden Dateien if($Anzzipdata>1){ print "\nEs werden $Anzzipdata Zip-Ordner entzippt..."; }else{ print "\nEs wird ein Zip-Ordner entzippt..."; } foreach $zipfile (@zipdata) { $zipfile2= "./LOG/$zipfile"; my $zd = Archive::Extract->new(archive => $zipfile2); my $ok = $zd->extract( to => './LOG') || die $zd->error; my @file = map{ File::Spec->catfile( $to, $_ ) } @{ $zd->files }; my @zip = grep (/\.zip$/,@file); foreach (@zip) { $_=substr($_,1,length($_)); #sonst wäre "/DATEINAME" @_[$count++]=$_; } if (@_ ne '') { foreach (@_) { $zipfile3 = "./LOG/$_"; #foreach-Schleife zum entfernen des / kann man löschen wenn man hier nach dem "LOG" kein "/" angibt my $zd2 = Archive::Extract->new(archive => $zipfile3); my $ok = $zd2->extract( to => './LOG') || die $zd2->error; } } } print " erfolgreich\n";