use Archive::Zip qw/ :ERROR_CODES /; my $zip = Archive::Zip->new; my $status = $zip->read( $file ); if ( $status != AZ_OK ) { die "Error in reading zip file -- Return status ", $status; } foreach my $member ( $zip->members ) { next unless $member->fileName =~ /\.out$/; $zip->extractMember( $member ); }