The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Archive::Peek::External::Zip;
use Moose;
use IPC::Run3;
extends 'Archive::Peek::External';

sub files {
    my $self = shift;

    my $filename = $self->filename;
    run3 [ 'unzip', '-lqq', $filename ], \undef, \my @out, \undef;
    my @files
        = sort grep { $_ !~ m{/$} } map { ( split '\s+', $_ )[-1] } @out;
    return @files;
}

sub file {
    my ( $self, $filename ) = @_;

    my $archive = $self->filename;
    run3 [ 'unzip', '-pqq', $archive, $filename ], \undef, \my $out, \undef;
    return $out;
}

__PACKAGE__->meta->make_immutable;