because Perl knows not to complain about $File::Find::name for example.
Based only on the code in the root node, I get the "used only once" warnings for both $File::Find::prune and $File::Find::name. Are you sure you're not using the latter twice?
I tried removing the explicit 'find' from File::Find->import, made no difference
find is exported by default, so yes, it doesn't make a difference. If you didn't call import at all (the equivalent with use is "use File::Find ();"), then you'd have to call it as File::Find::find(). And BTW, the other difference between importing find() at runtime (e.g. require + ->import) vs. compile time (e.g. use) is that in the latter case, you could omit the parens on the find function call.