use File::Find; find( { wanted => \&_process_files, no_chdir => 1 }, @directories_to_search); sub _process_files { my $file = $File::Find::name; # .json file if (-f $file and ($file =~ /\.json\Z/)) { _process_json($file); } }