Поиск

Вопросы и ответы

При попытке распечатать список списков с помощью оператора print "@LOL" выводятся значения типа ARRAY(0xl01210), ARRAY(Oxl014Q0) и т.д. Почему это происходит?

В случае обычного массива оператор print @array выводит на печать его элементы, разделенные пробелом. Оператор print "@LOL" работает точно так же — он распечатывает элементы массива @L0L, которые являются ссылками на другие массивы. Чтобы распечатать элементы каждого из массивов, на который указывают элементы массива @LOL, воспользуйтесь методикой, описанной выше в разделе "Список списков, или двумерный массив" этого занятия.

Я пытаюсь создать ссылку на список с помощью оператора $ref=($a, $Ь, $с). Почему в результате в переменной $ref оказывается ссылка на скаляр, а не на список?

В Perl конструкция {$а, $Ь, $с) является сокращенной записью списка ($а, $Ь, $с)! Поэтому в переменной $ref окажется ссылка на последний элемент списка, находящийся в круглых скобках, т.е. $с. А чтобы создать ссылку на анонимный массив, воспользуйтесь оператором $ref=[$a, $b, $c].