in reply to File::Find broken with pre/postprocess

You've misunderstood "preprocess". From the docs:
"preprocess" The value should be a code reference. This code reference is + used to preprocess the current directory. The name of the currently +pro- cessed 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 (ac +tually file/directory names) and is expected to return a list of st +rings. The code can be used to sort the file/directory names alphab +eti- cally, numerically, or to filter out directory entries based + on their name alone. When follow or follow_fast are in effect, +"prepro- cess" is a no-op.
It's doing what you ask. Your preprocess is returning the single value "1" (the result of the print).

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.