in reply to Range check with unordered limits

$inRange = (($a <=> $x) * ($b <=> $x)) < 1;

Nice use of the spaceship operator !! I like that.
I would probably use <=0 rather than <1 because I feel that it better defines the condition ... though both are, of course, exactly the same.
One of my first reactions was "How come positive fractional values less than 1 are allowed ?" ;-)
(I note that if one wants to also exclude values that are equal to either of the limits, then it's just a matter of altering the condition to <0.)

In the *truly* general case, this method doesn't correctly allow for the possibility that $a, $b or $x could be NaN.
If ($a <=> $x) and/or ($b <=> $x) involve comparison to a NaN, then they return undef - and unfortunately undef is treated as zero in numeric context, so $inRange would be set to a true value, because 0 is less than 1.
Note: This failing applies only to the (usual) case where the range limiters are *inclusive*, but not if they are *exclusive*.

Cheers
Rob