Why? 4. It's easier than the alternative
Using return codes to indicate success/failure
sub do_something { # attempt to do something # return true on success or # return false on failure }