Why? 4. It's easier than the alternative 

my($value, $errors) = do_something();
if( $errors ) {
  # deal with it
  # return ( undef, $errors ) ?
}