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