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:
return $status == 0 ? (wantarray ? () : undef) : 1;
or maybe better
return 1 if $status == 0;
return; # a return by itself implicitly returns an empty list
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
return 1 if $status;
return;
Updated: thanks ++Flexx. Moved one code example, added a few small but important bits.
Makeshifts last the longest.