На этом шаге мы рассмотрим единственную тернарную операцию.
Единственная тернарная операция выбора
<операнд1> ? <операнд2> : <операнд3>;
($n == 1) ? $а : @array;
Скалярный или списковый контекст, в котором используется эта операция, распространяется и на возвращаемое значение этой операции:
$а = $yes ? $b : @b; # Скалярный контекст. Если возвращается # массив @b, то присваивается количество его # элементов.
Операцию выбора можно использовать в качестве левого операнда операции присваивания, если и второй, и третий ее операнды являются правильными lvalue, т.е. такими значениями, которым можно присвоить какое-либо значение, например, именами переменных:
($а = $yes ? $b : @b) = @с;
В связи с тем, что результатом операции выбора может оказаться правильное lvalue, следует использовать скобки для уточнения ее операндов. Например, если в следующем выражении
($а % 3) ? ($а += 2) : ($а -= 2);
$а % 3 ? $а += 2 : $а -= 2;
(($а % 3) ? ($а += 2) : $а) -= 2;
На следующем шаге мы приведем общие сведения о списковых операциях.