PERL - статьи




П2.4.1.1 Основные понятия - часть 2


print $$$$refrefref;- напечатает ``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() может быть использована для ассоциирования ссылки с пакетом, функционирующим как объектный класс.




    Содержание  Назад  Вперед