#!/usr/bin/perl use strict; use Archive::Zip; my $Usage = "$0 zip_path\n"; die $Usage unless ( @ARGV == 1 and -d $ARGV[0] ); chdir( $ARGV[0] ) or die "chdir $ARGV[0]: $!\n"; my @files = <*.zip>; for my $zipname ( @files ) { # next statement reads the zip file: my $newname = rename_contents( $zipname ); rename( $zipname, $newname ); } sub rename_contents { my ( $zipname ) = @_; my $zip = Archive::Zip->new( $zipname ) or die "can't read $zipname: $!\n"; ( my $dataname = $zipname ) =~ s/\.zip$//; my $data = $zip->removeMember( $dataname ); ( my $newdataname = $dataname ) =~ s/^.{4}//; $data->fileName( $newdataname ); $zip->addMember( $data ); $zip->overwrite(); return( "$newdataname.zip" ); } #### #!/usr/bin/perl use strict; use IO::Compress::Zip qw/zip $ZipError/; use IO::Uncompress::Unzip qw/unzip $UnzipError/; my $Usage = "$0 zip_path\n"; die $Usage unless ( @ARGV == 1 and -d $ARGV[0] ); chdir( $ARGV[0] ) or die "chdir $ARGV[0]: $!\n"; my @files = <*.zip>; for my $zipname ( @files ) { my $newname = rename_contents( $zipname ); rename( $zipname, $newname ); } sub rename_contents { my ( $zipname ) = @_; my $data; unzip( $zipname => \$data ) or die "$zipname read failed: $UnzipError\n"; ( my $newname = $zipname ) =~ s/^.{4}//; $newname =~ s/\.zip$//; my $fz = new IO::Compress::Zip( $zipname, Name => $newname ) or die "$zipname open-for-write failed: $ZipError\n"; $fz->write( $data ) or die "$zipname write failed: $ZipError\n"; return( "$newname.zip" ); }