use strict; use warnings; use Data::Dumper; use File::Find; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); my $dir = q{/opt/ibm/db2/V9.5/samples/}; my @files = (); find( sub { return unless -f; # skip non-files push @files, $File::Find::name if m/.*(war|ear)$/i; }, $dir ); foreach my $file (@files) { my $zip = Archive::Zip->new(); if ($zip->read($file) == AZ_OK) { my @members = $zip->memberNames(); print qq{$file has } . scalar(@members) . q{ member(s)}; } else { die "failed to open $file"; } } __END__