Why? 4. It's easier than the alternative 

sub do_something {
  # attempt to do something
  # return true  on success or
  # return false on failure
}