http://www.perlmonks.org?node_id=11107229

hornpipe2 has asked for the wisdom of the Perl Monks concerning the following question:

I released my first module last month and I've already got a user :) ... who already has an issue :( ...

The problem they're having is: my module deals with remote service errors by warn() and return undef; however, the user want to be able to catch the errors and do something with the result. In other words, this pattern isn't working for them:

eval { $webhook->execute("Test message."); } or do { print "Found error: it was $@...\n"; }

... because this would only catch fatal errors, not warnings.

I could go replace warn with die throughout, but I wanted the wisdom of the Perl Monks. Is this wise? Is there a better way - maybe, set an internal $self->{error} with a copy of the error, or maybe add a $self->{autodie} flag, or... something else?

This is my first "real" module so I want to make sure I get a sensible design. For now I've suggested overriding %SIG{__WARN__} until I can come up with a better, permanent solution.