2012/1/31 Alexandr Alexeev <[email protected]>:

> 31 января 2012 г. 13:32 пользователь Василий Рябов <[email protected]> написал:
>
>> Заинтересовал 4 вопрос.
>> Почему-то в переменную попадает значение последнего элемента списка.
>>
>> $ perl -MO=Deparse -e '$a = ( 1, 2, 3 )'
>> $a = ('???', '???', 3);
>>
> Я не уверен на счет знаков вопроса, но последний элемент присваивается не
> "почему-то", а потому что в перле списки всегда (ну или по крайней мере - с
> давних пор) так себя вели и в camel book об этом говорится прямым текстом.

Мне кажется, это не поведение списка, а оператор запятая:

"Binary "," is the comma operator. In scalar context it evaluates its
left argument, throws that value away, then evaluates its right
argument and returns that value. This is just like C's comma operator.
In list context, it's just the list argument separator, and inserts
both its arguments into the list. These arguments are also evaluated
from left to right."
--- http://perldoc.perl.org/perlop.html#Comma-Operator

Т.е.:

  ($s) = (2, 8, 37);  # список
  $s   = (2, 8, 37);  # запятая

Поправьте, если ошибаюсь.

-- 
maxim.vuets.name
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить