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


in reply to Handling non-fatal method error strings without exceptions or globals?

Another option is to have your functions return multiple values:
my ($result, $error) = function($arg); if ($error) { # do something... }

One caveat is that if for some reason you want to disregard the error and only want the result, you need to remember to use parentheses:

($result) = function($arg); # get the result only $result = function($arg); # WRONG!!! gets the error only

Replies are listed 'Best First'.
Re^2: Handling non-fatal method error strings without exceptions or globals?
by sleepingsquirrel (Chaplain) on Jan 19, 2005 at 16:51 UTC
    Or, you could use wantarray to eliminate the caveat...
    #!/usr/bin/perl -w $result = fun(); print "$result\n"; ($result, $error) = fun(); print "$result, $error\n"; sub fun { return wantarray ? ("stuff","Error") : "stuff" }


    -- All code is 100% tested and functional unless otherwise noted.