为什么哈希在打印输出时会删除第一个值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);
答案 0 :(得分:8)
Perl哈希只能有唯一键,所以
$wordcount{2} = "apple";
稍后被
覆盖$wordcount{2} = "cake";
答案 1 :(得分: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);
这样,%wordcount
中的每个条目都将单词计数与多次出现的单词数组相关联(假设表示法中的:n
表示计数)。
成为初学者是可以的,但是假设其他人可以读懂你的想法是不行的。
此外,当词汇范围(our
)执行时,不要使用全局变量(my
)。