Why: easier than the alternative
- Return codes to indicate success/failure
sub do_something { # attempt to do something # return true on success or # return false on failure }
- Checking for errors
if( not do_something() ) { # now what? # what happened? # why? }