in reply to Re: variable set to 0 ? 0 : 1
in thread variable set to 0 ? 0 : 1

One interesting use that is (as far as I know) unique to Perl, is using the trinary as an Lvalue. That is on the left hand-side of an assignment as in this (rather silly) example.

#! perl -sw use strict; my (@aboveC, @cOrLess); while (<DATA>) { # $1 := name, $2 := grade m/^(\w+)\s+([a-f][+-]?)$/i; # if the grade is one of these 0<= index('A+ A A- B+ B B- C+', uc($2), 0 ) # add name here if not add name here ? $aboveC[@aboveC] : $cOrLess[@cOrLess] = $1; } print "Above C students: @aboveC\n"; print "C or Less students: @cOrLess\n"; __DATA__ homer f bart d- marge c+ lisa a

which gives

C:\test>195952 Above C students: marge lisa C or Less students: homer bart C:\test>

Well It's better than the Abottoire, but Yorkshire!

Replies are listed 'Best First'.
Re3: variable set to 0 ? 0 : 1
by blakem (Monsignor) on Sep 08, 2002 at 04:10 UTC
    I have to admit being excited about this construct the first time I saw it, though I don't know if I've ever really used it....
    push(@{ $whichone ? \@arr1 : \@arr2 }, $element);

    -Blake

      Oh, I use that quite frequently: push @{ -d "$dir/$_" ? \@dir : \@file }, $_ for readdir DIR; It's pretty much the only use I have for it, but it's a perfect match for that.

      Makeshifts last the longest.