#!perl use Modern::Perl; #use IO::Compress::Zip qw(zip $ZipError) ; use Archive::Zip; use IO::File my %files; my @files = <*.txt *.docx>; for (@files) { next unless /^(\d+.\d+.\d+.\d+)/; push @{ $files{$1} }, $_; } for my $ip ( keys %files ) { my $zip = Archive::Zip->new(); my $file_member = $zip->addFile($files{$ip} => "${ip}.zip"); my $fh_zip = IO::File->new( "${file}.zip", 'w' ); $fh_zip->binmode; unless ( $zip->writeToFileHandle($fh_zip) == 0 ) { $fh_zip->flush; $fh_zip->close; } $fh_zip->close; #zip $files{$ip} => "${ip}.zip" or die "zip failed: $ZipError\n"; }