Ugggh, communication gap. I'm sorry, I thought my example should be obvious enough. I should have known better.
I stand to my claim that your patch is not correct, because it changes the return value of the command return(@lines) in the case where @lines contains a value. I'm not talking about the empty array @lines, I'm talking about the array @lines with an element.
So please review my counter example once again:
% perl -le '
my @lines = (42);
sub before { return (@lines) or die; }
print before();
sub after { return (@lines) || die; }
print after(); '
42
1
If you *only* change the C<or> to C<||>, then you change the return value of the subroutine from 42 to 1 in the case that @lines contains 42.
This is why I said your patch is wrong.
Clear now?