Carp
сообщает об ошибках с точки зрения вызывающей стороны. Это полезно для модулей, где вы обычно хотите предупредить о неправильном использовании (например, отсутствующий аргумент) и определить место, где произошла ошибка , а не где обнаружено. Это особенно важно для вспомогательных функций, которые могут использоваться во многих местах.
Большинство авторов используют warn
в скриптах и carp
в модулях. Иногда я использую warn
внутри модуля, когда я хочу, чтобы сообщение об ошибке отражало проблему в реализации модуля (например, случай, который он должен поддерживать, но не поддерживает). Можно утверждать, что cluck
будет лучше в таких ситуациях, как он обеспечивает полную трассировку стека.