Может кто-нибудь помочь мне понять вывод этой программы на Perl:Почему автовивитация Perl работает в этом случае?
use Data::Dumper;
my %hash;
$hash{hello} = "foo";
$hash{hello}{world} = "bar";
print $hash{hello} . "\n";
print $hash{hello}{world} . "\n";
print Dumper(\%hash);
И вывод:
foo
bar
$VAR1 = {
'hello' => 'foo'
};
Где "Foo" приходит? Почему он не распечатывается с помощью самосвала?
Обратите внимание, что если я поменять порядок назначений:
use Data::Dumper;
my %hash;
$hash{hello}{world} = "bar";
$hash{hello} = "foo";
print $hash{hello} . "\n";
print $hash{hello}{world} . "\n";
print Dumper(\%hash);
мой вывод, что я ожидаю:
foo
$VAR1 = {
'hello' => 'foo'
};
EDIT: Я знаю, что use strict;
бы поймать, но я Мне больше интересно знать как строка «foo» все еще печатается.
Добавление 'use strict' должно помочь раскрыть это –
Когда вы говорите * Где находится« foo »? *, Вы имеете в виду ** bar **? –
Нет, я ожидал, что там будет только бар, но теперь я вижу, что происходит из-за вашего приятного ответа (и комментария Криса) ниже. – tster