That's what the -exec predicate is for:
find /some/path -type f -name file.pl -size +10M -exec perl /my/script.pl {} \;
If you do want to run have your shellyour shell run the commands based on the output of find, then that will have to be bash/zsh specific if you want to be reliable as in:
zsh:IFS=$'\0' for f ($(find /some/path -type f -name file.pl -size +10M -print0)) { /my/script.pl $f }
though in zsh, you can simply do:
for f (./**/file.pl(.LM+10)) /my/script.pl $f
bash/zshwhile IFS= read -rd '' -u3 file; do /my/script.pl "$file" done 3< <(find /some/path -type f -name file.pl -size +10M -print0)
Whatever you do, in bash or other POSIX shells, avoid:
for file in $(find...)
Or at least make it less bad by fixing the field separator to newline and disable globbing:
IFS='
'; set -f; for file in $(find...)
(which will still fail for file paths that contain newline characters).