为什么哈希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)
Perl哈希只能有唯一的密钥,所以
$wordcount{2} = "apple";
Run Code Online (Sandbox Code Playgroud)
后来被覆盖了
$wordcount{2} = "cake";
Run Code Online (Sandbox Code Playgroud)
你可能想做的是:
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)将执行时,不要使用全局变量().