These operators are called 'Logical' for a reason. They are meant to return a logical value (true or false). Code that depends on the string or numeric value of the result, which arguments are evaluated, or even in the order in which they are evaluated could fail under a future version of perl. Note that the idiom
open ... or die "..."; does depend on the open being done first, but is so common I am sure it will always be supported.