Из любимого юмористического сообщества ru_php я сегодня узнал, что в PHP логические операторы “and” и “or” имеют гораздо более низкий приоритет, чем “&&” и “||”.
Каково же было моё удивление, когда я обнаружил, что и в перле дело обстоит точно так же. То есть, 1 and 1 || 0 and 0 — это вовсе не то же самое, что 1 and 1 or 0 and 0.
Я, правда, or применял исключительно в конструкциях “foo() or die()”, поэтому на эти грабли ни разу не наступил. Но это ж надо было ТАКОЕ придумать..
Оригинал этой записи в личном блоге.
Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме.
Tags:
no subject
no subject
no subject
Оба раза происходит то, что можно подумать.
no subject
Например,
my @foo = ( "X" x 3 );создаёт список из одного элемента - строки "XXX".А
my @foo = ( ("X") x 3 );создаёт список из трёх элементов, каждый из которых является строкой "X".no subject
А для // нет аналога в виде слова.
no subject
1) // — пожалуй. Но с || оно тоже вполне бывает.
no subject
no subject
Я бы написал явно: if($foo = fetch_foo()) { bar($foo); }
no subject
no subject
есть -- err
no subject
no subject
no subject
no subject
но он был достаточно долго, чтобы его было легко найти (http://www.google.com/search?&q=perl+"err"+operator). например вот: http://search.cpan.org/~rgarcia/perl-5.9.3/lib/feature.pm#the_'err'_feature