Perl: Разыменование ссылки на хэш в скаляр?

Почему разыменование ссылки на хэш в хэш и присвоение его скаляру не имеет значения (по крайней мере для меня)?

Код:

my $hash = {
        1 => 9,
        2 => 10,
        3 => 11,
        4 => 12,
        5 => 13,
        6 => 14,
        7 => 15,
        8 => 16,
       };

my $dereferenced = %$hash;

print $dereferenced;

Версия Perl: 5.12.4

ОС: Windows 7

Напечатанное значение

7/16

Имеет ли это какое-то отношение к внутренностям Perl?

1 ответ

Решение

Скаляры не могут содержать хэши или массивы, только ссылки на них.

Но даже если бы они могли, когда вы используете хеш справа от скалярного присваивания, он находится в скалярном контексте, а хеш в скалярном контексте выдает false, если хеш пустой, или строку, описывающую использование сегмента в хэше. если нет (например, "7/32").

Другие вопросы по тегам