http://www.perlmonks.org?node_id=1151104


in reply to defined defined -- Bug or "Feature"?

two defined's reverses the logic of the expression
No, it doesn't reverse the logic. It's always true, regardless of the single defined's result:
$ perl -E 'say ((defined $x) ? "defined" : "undef")' undef $ perl -E 'say ((defined defined $x) ? "defined" : "undef")' defined $ perl -E '$x = 1; say ((defined $x) ? "defined" : "undef")' defined $ perl -E '$x = 1; say ((defined defined $x) ? "defined" : "undef")' defined
This is because, as stated in previous comments, the first (rightmost) defined will always return a defined result, so the second (leftmost) defined always receives a defined input value.