use File::Find; sub listdirectory { my ($basedir, $basename) = @_; my @files; find sub { -d && push @files, glob "${File::Find::name}/${basename}*.{pdf,tif}"; }, $basedir; @files; }