in reply to Re: Question about ternary operator
in thread Question about ternary operator

Thx, operator precedence is sometimes a PITA, so this is what the first ternary statement should look like then
exists($checked->{Group}{$GroupDN}) ? ($rc_OK=1) : ($rc_OK=check_group +($GroupDN,0));

Replies are listed 'Best First'.
Re^3: Question about ternary operator
by moritz (Cardinal) on Jul 01, 2009 at 08:52 UTC
    No, it should look exactly like the first statement. The ternary operator is very good if you use its value, but if you use it in void context it's just a kludge for an if statement. So
    # bad: ternary in void context: exists($checked->{Group}{$GroupDN}) ? ($rc_OK=1) : ($rc_OK=check_group +($GroupDN,0)); # good: 'if' in void context: if (exists($checked->{Group}{$GroupDN})) { $rc_OK = 1 } else { $rc_OK=check_group($GroupDN,0) } # also good: ternary in scalar context: $rc_OK = exists($checked->{Group}{$GroupDN}) ? 1 : check_group($Group +DN,0)

    So you have two good, idiomatic ways to express something, and complain that the third is a PITA?

Re^3: Question about ternary operator
by ikegami (Patriarch) on Jul 01, 2009 at 18:31 UTC

    Thx, operator precedence is sometimes a PITA

    If the precedence was reversed, the intended use would not work.

    $y = $c ? $x1 : $x2;
    would mean
    ($y = $c) ? $x1 : $x2;

    By the way, it's called the "conditional operator". Perl has many ternary operators.