Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^3: What operator should perl5porters use for safe dereferencing?

by Anonymous Monk
on May 31, 2012 at 07:23 UTC ( [id://973449]=note: print w/replies, xml ) Need Help??


in reply to Re^2: What operator should perl5porters use for safe dereferencing?
in thread What operator should perl5porters use for safe dereferencing?

eval{} surely works. But it works too well. Far too well! It'll happily eat any exception whatsoever. Sure you will be able to tell whether it's the kind of exception that happens when calling a method on an undef, but will it be one of the calls you have here or is it somewhere deep down within one of the methods?

For me, I don't see that as a problem, either I want exceptions, or I want to ignore them

I doubt there exists a situation where I would want to ignore only this particular exception:

Can't call method "%" on an undefined value

But if there was, I'm sure I'd use one of cpan's exception filtering modules instead of  ~>

  • Comment on Re^3: What operator should perl5porters use for safe dereferencing?
  • Download Code

Replies are listed 'Best First'.
Re^4: What operator should perl5porters use for safe dereferencing?
by Jenda (Abbot) on May 31, 2012 at 14:33 UTC

    I doubt there exists a situation where I would want to ignore all exceptions.

    There do exist situations in which I will want to catch and log any exception and move on to the next task though, but this is a different thing. There's a huge difference between being able to shorten

    my $age = do { my $boss = $company->boss(); my $wife = $boss ? $boss->wife() : undef; $wife ? $wife->age() : undef };
    to just
    my $age = $company~>boss()~>wife()~>age();
    and just ignoring anything that might happen while getting that info. Because, you know, if the company has no boss or the boss has no wife, then the age is actually undefined. On the other hand if there was a problem loading the data from the database or where ever, I want to know, because then the value is not undefined. It could not be "computed".

    Jenda
    Enoch was right!
    Enjoy the last years of Rome.

      Because, you know, if the company has no boss or the boss has no wife, then the age is actually undefined.

      Dare I suggest a Null wife?

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-26 03:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found