[preamble] Все мы знаем о том, что реклама - не двигатель торговли, а инструмент охамевшего спекулянта, искренне желающего ничего не делать, а только пользоваться результатами чужого труда, поскольку тому, кто работает, как правило некогда думать о том, как бы втюхать произведённое втридорога.
Все мы также знаем о том, что Yandex - лучший друг спекулянтов, потому что основная их статья доходов - это реклама и недостоверная информация в Маркете. Та самая грёбаная реклама, которая делает из интернет большую смердящую навозную кучу с опарышами inside... [/preamble]
Но суть конечно не в этом, а в том, что у Yandex'а задачки интересные. Вот, в частности:
my $x=1;
$x=(1)?$x=1:$x=2;
print $x;
Что будет напечатано?
Ага, напечатано будет «2».
Это весьма неожиданный результат, поскольку та часть тернарного оператора, которая после двоеточия, обычно даже не вычисляется, если условие заведомо истинно.
Если, например, сделать $x=(1)?print "hello\n":print "bye\n"
, то bye вы уж точно не увидите.
Так почему же в описанном выше случае значением будет всё-таки «2», а не «1»?