Ternario �?: � � l'operatore condizionale, come il C. Funziona tanto come una dichiarazione se-allora-altra. Se la discussione che viene prima del �?� � allineare, allora la discussione prima del �: � � rinviato, altrimenti la discussione dopo �: � � rinviato. Ci� � illustrata sotto.
printf "I have %d dog %s.\n", $n,
($n == 1) ? '' : "s";
I propag di contesto della lista o di scalare verso il basso nella seconda o terza discussione, che il soever � selezionato.
$a = $ok ? $b : $c; # get a scalar
@a = $ok ? @b : @c; # get an array
$a = $ok ? @b : @c; # that's just a count!
L'operatore potrebbe essere assegnato se sia le seconde che terze discussioni sono lvalues legali (valori che potete assegnare loro).
($a_or_b ? $a : $b) = $c;
Questa dichiarazione necessariamente non � garantita per contribuire alla leggibilit� del programma.