- напечатает ``how are you?''.

Нужно понимать, что раскрытие ссылки имеет более высокий приоритет, чем извлечение значения переменной.
  • Можно поступить как и в предыдущем случае, но заключить выражение после знака $в фигурные скобки. Приведенный пример тогда будет выглядеть таким образом: $bar = ${$scalarref}; push(@{$arrayref},$filename); ${$arrayref}[0] = "January"; ${$hashref}{"key"} = "value"; &{$coderef}(1,2,3);

    В данном случае использование фигурных скобок ничего не меняет, но в общем случае в скобках может стоять произвольное выражение, даже подпрограмма: &{ $dispatch{$index} }(1,2,3);


  • В случае массива или хэша можно использовать такую запись: $arrayref->[0] = "January"; $hashref->{"key"} = "value";

    Левая часть должна быть выражением, возвращающим ссылку, возможно также являющуимся раскрытием ссылки: $array[$x]->{"foo"}->[0] = "January";


  • Если ссылка является ссылкой на объект, то раскрытие данных происходит также, как уже было описано выше.


  • Функция ref() может быть использована для определения типа объекта, на который указывает ссылка. Функция bless() может быть использована для ассоциирования ссылки с пакетом, функционирующим как объектный класс.