Я предпочитаю использовать carp / croak / confess, если это только моя отладка, но если вы делаете это для производственного кода, возможно, попробуйте Log :: Report .
Итак, что-то вроде: $var == 3 or confess("var != 3!")
- это то, что я бы использовал, если бы я хотел один лайнер, который печатает ошибку и трассировку стека.