#!/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" ); }