The explanation has already been given exhaustively, but I want to expand a bit on semantics here.
Returning zero in Perl is usually a bad meme. It is ok if you actually meant to return a numeric zero, but if you mean to return "false", the Perlish way is to return an empty list <update> in list context and undef otherwise. </update> This is because by returning 0 you return a single-element list, which evaluates to true in list context. The code would then look like this:
or maybe betterreturn $status == 0 ? (wantarray ? () : undef) : 1;
return 1 if $status == 0; return;Another pitfall may or may not be the == 0. Is it meant to test falseness? If so, it is not precise. Perl understands the notion of an undefined value <update> and also considers a defined but empty string as well as a literal string "0" to be false </update>, which are not the same as zero, so this test is broken if it means to check falseness. In all likelihood, the programmer there should have written# a return by itself implicitly returns an empty list
return 1 if $status; return;
Updated: thanks ++Flexx. Moved one code example, added a few small but important bits.
Makeshifts last the longest.
In reply to Re: variable set to 0 ? 0 : 1
by Aristotle
in thread variable set to 0 ? 0 : 1
by c
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |