为什么我会收到“匿名哈希中的奇数元素”警告

Dam*_*iii 6 perl hash

我的 perl 代码收到警告,不知道为什么...

警告:

Odd number of elements in anonymous hash at /Users/../Tree.pm line 56.
Run Code Online (Sandbox Code Playgroud)

这给了我这一行:

$dic->{$firstLetter}={$letra};
Run Code Online (Sandbox Code Playgroud)

执行上有问题吗?

我的意思是,它通过了所有测试,但它给了我这些错误......就像 10 次总是在同一条线上!请,一些建议将受到欢迎!:)

sub add_word{
    my ($self,$word) = @_ ;
    my $dic = $self->{'dic'};
    my @array = split(//,$word);
    my $firstLetter = shift @array;
    for my $letra(@array){
            if(!$dic->{$firstLetter}){
                    $dic->{$firstLetter} = {$letra};
                    $dic = $dic->{$firstLetter};
            }
            else{
                    if($dic->{$firstLetter}){
                            $dic = $dic->{$firstLetter};
                    }
            }
            $firstLetter = $letra;
    }
    $dic->{$firstLetter} = {"\$" => "\$"};
}
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 6

= {$letra} 正在创建一个带有键但没有值的 hashref 并尝试分配它。

您可能只想分配您拥有的标量:

$dic->{$firstLetter} = $letra;
Run Code Online (Sandbox Code Playgroud)

虽然你可能想要:

$dic->{$firstLetter} = { someKey => $letra };
Run Code Online (Sandbox Code Playgroud)

或者

$dic->{$firstLetter} = { $letra => "someValue" };
Run Code Online (Sandbox Code Playgroud)

  • 我完全不明白你的意思。 (6认同)