Perhaps you could use: Archive::Extract #!/usr/bin/perl -w
$| = 1; BEGIN {open (STDERR, ">>error.txt"); } print "Content-type: text/html\n\n"; use Archive::Extract; use CGI::Carp qw/fatalsToBrowser/; use File::Find; use Cwd; my $dir = cwd(); my $time = time; my $cnt = 0; my $who =''; my $ok = ''; sub rm(); @directories = ("$dir/downloads/tamp"); find(\&rm, @directories); sub rm() { my ($filename) = $_; # $File::Find::dir contains the current directory # $File::Find::name contains the complete path name (dir + filename) # $_ or $filename contains the filename alone. my $temp_webfile = "$File::Find::name" . "_temp"; if (($filename =~ /\.(zip|tar)$/i) && ($filename !~ /search_edit/i)) { $cnt++; $who = $File::Find::name; my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($who); $who = Archive::Extract->new( archive => "$who" ) $ok = $who->extract( to => "$dir/adult/plog-content/uploads" ); print "$cnt\t$filename\tcreated: $ctime\tCHMOD: $mode \n<br>"; } }