use strict; use warnings; use File::Find::Rule; my $search_path = '.'; my @files = File::Find::Rule ->name('*.wgt') ->file ->nonempty ->in($search_path); foreach my $file (@files) { # do something with '$file' }