find ({ preprocess => \&preprocess, wanted => \&wanted }, $mypath); sub preprocess { my @toreturn = (); if (-f && /\.log$/ ) {push (@toreturn, $_);} elsif (-d && /advanced/ ) {push (@toreturn, $_);} return @toreturn; } sub wanted { if ($File::Find::dir =~ /$envName$/) { checkLastLine(); } else {print "not same env: $File::Find::name\n";} }