Ваш код отсутствует
use strict;
C:\Temp> hui
Can't use string ("foo") as a HASH ref while "strict refs" in use at
C:\Temp\hui.pl line 7.
Убедитесь, что все ваши скрипты начинаются с:
use strict;
use warnings;
Дано:
$hash{hello} = "foo";
$hash{hello}
- это НЕ ссылка на хеш.
$hash{hello}{world} = "bar";
обрабатывает строку "foo"
как ссылку на хэш и создает хэш %main::foo
и устанавливает $foo{world}
в "bar"
.
Когда вы делаете:
print Dumper \%hash;
печатает только содержимое %hash
. Принимая во внимание, когда вы делаете
print $hash{hello}{world} . "\n";
печатает $foo{world}
.
Без strict
вы не сможете обнаружить, что скрипт растоптал все пространство имен пакета.
Добавить
print Dumper \%main::;
или
print Dumper \%main::foo;
для проверки таблицы символов после ее запуска.