Ответ очень зависит от языка. Вы должны следовать идиоме для языка, который вы используете. Идиома для Perl, которую вы упомянули, состоит в том, чтобы возвращать ноль (0) для успеха и другие значения для неудачи. Если вам нужно вернуть несколько значений, как в вашем примере, одним из них всегда может быть код успеха / сбоя.
Если вы используете язык, который поддерживает исключения (например, Java, C #, C ++), то вы должны указать исключительные условия (например, сбои), используя исключение. Если процедура завершается нормально (т.е. без исключений), то можно предположить, что она прошла успешно, и любые возвращаемые значения можно безопасно использовать.