in reply to Check if file exists
How is -e $file true when $image is the empty string '' or even undef?
-e (or any of the other filetest functions documented here) accepts either a filehandle or a directory handle as its argument. When $image is empty or undefined, the assignment my $file = "$dir/$image"; initialises $file to just $dir/, which -e accepts as a directory handle — and since that directory exists, -e returns true.
(Note that if warnings are enabled, the concatenation of a string with undef will result in a warning like this:
Use of uninitialized value $image in concatenation (.) or string at -e + line...
which is a useful indicator that something is wrong.)
Your suggested fix — checking that $image has a true value — looks good to me. Another possibility is to confirm that $file is not a directory:
if (!-d $image && -e $image) { print "Yes image exists\n"; } else { print "No image doesn't exist\n"; }
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Check if file exists
by afoken (Chancellor) on May 06, 2018 at 16:22 UTC |