У меня проблема с Perl, и я действительно не знаю, почему это происходит ... Проблема заключается в том, что:Не хочет ссылаться на хэш хэш
sub rem_word{
my ($self,$word) = @_;
my $dic = $self;
my @word = split(//,$word);
my $count ;
my $first = 1;
for my $letter(@word){
$count = scalar (keys %$dic);
#$dic = $dic->{$letter};
if($dic->{$letter}){
print "ELEMENTOS KEYS : $count\n";
$dic = $dic->{letter};
}
print "WOOT COUNT: $count HASH: $dic\n";
}
}
Если бы я поместите инструкцию «$ dic = $ dic -> {letter}» в мое «если» ... Кажется, что она не добавляется ... Но, если я поставил перед моим if, он добавит и продолжит мой цикл ...
Результаты (до этого, если):
WOOT COUNT: 3 HASH: HASH(0x7f88308361b8)
WOOT COUNT: 2 HASH: HASH(0x7f883088eb28)
WOOT COUNT: 2 HASH: HASH(0x7f8830832648)
WOOT COUNT: 2 HASH: HASH(0x7f88308f8060)
WOOT COUNT: 1 HASH: HASH(0x7f88308ff6f0)
Результаты (внутри если):
WOOT COUNT: 3 HASH:
WOOT COUNT: 0 HASH: HASH(0x7fb6918018c8)
WOOT COUNT: 0 HASH: HASH(0x7fb6918018c8)
WOOT COUNT: 0 HASH: HASH(0x7fb6918018c8)
WOOT COUNT: 0 HASH: HASH(0x7fb6918018c8)
А если серьезно ... Я не понимаю, почему это дает мне тот результат ... Когда, по-видимому, для меня, это почти то же самое! благодарно
Damien
Этот код должен делать? –
@ Hynek-Pichi-Vychodil I * think * OP пытается построить trie, но вы правы: дамп ожидаемой структуры данных + соответствующий тестовый пример был бы наиболее полезен. – amon
Вместо этого: '$ dic = $ dic -> {letter}'. Разве вы не имеете в виду это: '$ dic = $ dic -> {$ letter}'? Отсутствует знак доллара. – FMc