我希望我的数组成为我的新哈希的键。我正在编写一个计算文档中单词出现次数的程序。
my @array = split(" ", $line);
keys my %word_count = @array; #This does nothing
当我逐行读取 infile 时,会发生此段。我正在尝试找到一种使用哈希来完成这个项目的方法。单词是键,出现的次数是值。但是,这一步尤其让我感到困惑。
使用散列片。
my %word_count;
@word_count{split ' ', $line} = ();
# if you like wasting memory:
# my @array = split ' ', $line;
# @word_count{@array} = (0) x @array;
你不能那样做,当然。
my %word_count = map {($_, 0)} @array;
将初始化散列的键;但通常在 Perl 中你不想这样做。这里有两个问题是
0
为1
上述内容,因为如果在该行中重复一个单词,您只会计算一次,其他单词将被覆盖。my %word_count = map { $_ => 0 } split(" ", $line);
您正在尝试计算一行中单词的出现次数,对吗?如果是这样,你想要
my %word_count;
++$word_count for split(/\s+/, $line);
或者把它放在头上,以便于细化一个词的定义:
my %word_count;
++$word_count for $line =~ /(\S+)/g;