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


in reply to Re^2: Does eval cause that much of a performance hit?
in thread Does eval cause that much of a performance hit?

What are the alternatives

An alternative to your alternatives

my $foo = defined($baz) ? $bar : undef;

or, with a sensible default, as an explicit undef is pretty dumb,

my $foo = defined($baz) ? $bar : 0;

This saves at least a nextstate and an assignment, for no loss of readability.

• another intruder with the mooring in the heart of the Perl

Replies are listed 'Best First'.
Re^4: Does eval cause that much of a performance hit?
by BrowserUk (Patriarch) on May 06, 2009 at 13:50 UTC

    I agree with you, except that we've now moved so far from the OPs point: prefer things like a three line if construct than a trailing if., and perrin's response that we're almost on a different subject. 'sides which, the same people that eshew the trailing if also tend to reject the ternary as too complex/confusing/unclear/short.

    as an explicit undef is pretty dumb,

    I'm not sure where you saw the explicit undef?


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

      I don't think the topic has drifted.

      The point I wanted to make was that a ternary conditional is a viable alternative to introducing a scope (a 3-line if), if statement modifiers are not favoured by local shop practices. (Which is a reasonable edict, even if I don't agree with it myself).

      I'm not sure where you saw the explicit undef?

      There was none. It came about in my snippet from employing a ternary, which requires one to put something "in the else" part.

      • another intruder with the mooring in the heart of the Perl