LINUX.ORG.RU

В руби аналогичное поведение. И вот что показывает:

irb(main):006:0> RubyParser.new.parse "a or b = 'c'"
=> s(:or, s(:call, nil, :a), s(:lasgn, :b, s(:str, "c")))
То есть or таки приоритетнее. Раз поведение аналогичное, то и в перле так же должно парситься.

cdshines ★★★★★
()
Последнее исправление: cdshines (всего исправлений: 1)
Ответ на: комментарий от cdshines
$B = 'C' or $A;

делает так, как ты хочешь.

Вот: http://perldoc.perl.org/perlop.html#Logical-or-and-Exclusive-Or

Logical or and Exclusive Or

[...] This means that it short-circuits: the right expression is evaluated only if the left expression is false.[...]

То есть $А - не false, поэтому дальше и не пойдет.

cdshines ★★★★★
()
Ответ на: комментарий от cdshines

short-circuits

Да, похоже дело в этом. Спасибо.

pru-mike ★★
() автор топика

потому что иначе бы не работало любимое выражение перловиков 'do_something or die;'

anonymous
()
$ perl -MO=Deparse -e'
?> $A = 'A';
?> $B = 'B';
?> $A or $B = 'C';
?> '
$A = 'A';
$B = 'B';
$B = 'C' unless $A;
-e syntax OK

Получается, что если !$A, то $B=«C».

AITap ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Да, правильно. Я хотел сказать, что or будет выше в дереве.

cdshines ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.