http://www.perlmonks.org?node_id=1005328


in reply to Re^2: Recursive image processing (with ImageMagic)
in thread Recursive image processing (with ImageMagic)

File:Find is that I think it's better for finding file "needles in a haystack", rather than processing ALL the files

I don't think so. Without fine tuning, find({wanted => \&wanted, ...}) invokes wanted for each file and directory found, so wanted sees the entire haystack including all needles, piece by piece.

I need to check or create (regardless) the output folder for and every file created

No. File::Find also calls wanted for the directories found during the file tree traversal. You need to check and create directories only in that case.

You could also use the preprocess option, it is invoked exactly when you want to create the target directory:

The value should be a code reference. This code reference is used to preprocess the current directory. The name of the currently processed directory is in $File::Find::dir. Your preprocessing function is called after readdir(), but before the loop that calls the wanted() function. It is called with a list of strings (actually file/directory names) and is expected to return a list of strings. The code can be used to sort the file/directory names alphabetically, numerically, or to filter out directory entries based on their name alone. When follow or follow_fast are in effect, preprocess is a no-op.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)