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 }
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

In reply to Idomatic Handling of Subroutine Error by dvergin

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":