Я пытаюсь создать хеш с помощью функции в perl. Фактически я работал над созданием двоичного дерева поиска в perl. Ниже приведен код:Создание хэша с помощью функции
sub newhash {
$data = shift;
$left = undef;
$right = undef;
%node = ("data"=>$data,"left"=>$left,"right"=>$right);
return (\%node);
}
$firstele = newhash(2);
foreach (keys %$firstele)
{
print "$_:$firstele->{$_}\n";
}
$node = newhash(1);
foreach (keys %$node)
{
print "$_:$node->{$_} \n";
}
foreach (keys %$firstele)
{
print "$_:$firstele->{$_}\n";
}
Проблема в том, что, когда я печать оригинальный хэш, данные ключа заменяется на то, что я передаю в функцию newhash
. Выход:
left:
right:
data:2
left:
right:
data:1
left:
right:
data:1
Любые идеи, почему ключ данных заменяется?
Всегда используйте 'use strict; использовать предупреждения; '! – ikegami