Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Handling non-fatal method error strings without exceptions or globals?

by demerphq (Chancellor)
on Jan 19, 2005 at 17:58 UTC ( #423455=note: print w/ replies, xml ) Need Help??


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

You could use dualvar and a hash...

use Scalar::Util qw(dualvar); my %Error=(220=>"Cannot connect to service"); sub mysub { if (@_) { return dualvar(0,1); } else { return dualvar(220,0); } } my $x; $x=mysub() or die $Error{$x};

Of course this still leaves the problem of where to put the error, in the return or in a global. I think your options range from using something like $Pack::Error (which is IMO infinitely preferable to using the magic global $_), using $@ or using something like ${^MYERROR}. For instance I think the following is a reasonable approach:

use Scalar::Util qw(dualvar); my %Error=(220=>"Cannot connect to service"); sub mysub { if (@_) { $@=dualvar(0,1); } else { $@=dualvar(220,0); } return $@ } mysub() or die sprintf "%d %s",$@,$Error{0+$@};

Assuming that you dont have any eval checking logic that this will interfere with (and im not seeing immediately how that could happen anyway) then it should be ok.

---
demerphq


Comment on Re: Handling non-fatal method error strings without exceptions or globals?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://423455]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (11)
As of 2014-08-21 18:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (142 votes), past polls