http://qs321.pair.com?node_id=113166

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

I'm looking for an idiom or pattern.

I have a subroutine. I'd like to call it and handle problems it might encounter. I could implement so that I can call it this way:

($success, $err_msg) = my_sub(); unless ($success) { # handle error condition using $err_msg }
But I would much rather set things up so I can use the more concise:
unless ( my_sub() ) { # handle error condition }
or...
unless ( $result = my_sub() ) { # handle error condition }
Can I co-opt a global special error var to set on error in my sub? I've checked on a couple possibilities but haven't found anything promising. E.g. you can assign a number to $! but apparently only to cause it to point to an existing system error description if $! is then used in string context.

My religion forbids me to use globals of my own creation, so I'd like to avoid that if I can. ;-)

TIA, David