为什么我的第一个哈希值在Perl中消失了?

Mr.*_*red 3 arrays perl hash

为什么哈希apple:2在打印输出时会删除第一个值?

use warnings;
use strict;
use Data::Dumper;

my @array = ("apple:2", "pie:4", "cake:2");
my %wordcount;
our $curword;
our $curnum;
foreach (@array) {
    ($curword, $curnum) = split(":",$_);
    $wordcount{$curnum}=$curword;
}
print Dumper (\%wordcount);
Run Code Online (Sandbox Code Playgroud)

Сух*_*й27 8

Perl哈希只能有唯一的密钥,所以

$wordcount{2} = "apple";
Run Code Online (Sandbox Code Playgroud)

后来被覆盖了

$wordcount{2} = "cake";
Run Code Online (Sandbox Code Playgroud)


Sin*_*nür 5

你可能想做的是:

use warnings;
use strict;

use Data::Dumper;

my @array = ("apple:2", "pie:4", "cake:2");
my %wordcount;
for my $entry (@array) {
    my ($word, $num) = split /:/, $entry;
    push @{$wordcount{$num}}, $word;
}

print Dumper (\%wordcount);
Run Code Online (Sandbox Code Playgroud)

这样,每个条目%wordcount将字数与多次出现的单词数组相关联(假设:n符号表示计数).

成为初学者是可以的,但是假设其他人可以读懂你的想法是不行的.

此外,our当词法范围(my)将执行时,不要使用全局变量().