thanks for the replies. I tried it with both relative and absolute paths- same result. And As I said, I cut and pasted the directories from the debugger and *ls'ed* them and they are fine ;so there appears to be no oddball characters.
I should have been more accurate and said I was looking for duplicate file NAMES, not contents. I don't really care what's in them.
Basically the questions are
(a) why does -e valid_file_path return undef, and
(b) why does (defined $a && $a) return TRUE when $a eq undef?