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").