$File::Find::prune = 1 if defined $File::Find::prune;
Careful, I doubt this actually does what you think! None of the versions of File::Find that I looked at set prune to a defined value, meaning your code may silence the warning but wouldn't actually set $File::Find::prune to a true value! The code would only work if some piece of code somewhere was setting $File::Find::prune to some value other than undef, but you probably don't want to depend on that happening.
Since $File::Find::prune wont' be defined prior to require File::Find being run, perl doesn't care about it when it's checking the code on start, and since when this feature runs, File::Find::prune is defined, it works as expected.
Based on your wording here I think there may be a misunderstanding as to what defined does. File::Find says our $prune;, thus letting the variable be known to the compiler, but it still leaves the variable's value at undef, which is what defined tests - i.e. your test above will still be false.
In reply to Re^4: Why $File::Find::prune = 1 returns used only once error
by haukex
in thread Why $FIle::Find::prune = 1 returns used only once error
by h2
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |