Perl大师很容易...
我想要一个简单地接受项目数组(实际上是多个数组)的函数,并计算散列的关键部分中的每个项目的次数.但是,我真的不确定Perl哈希.
@array = qw/banana apple orange apple orange apple pear/
Run Code Online (Sandbox Code Playgroud)
我读到你需要使用这样的代码来做数组:
my %hash = (
'banana' => 0,
'orange' => 0,
'apple' => 0
#I intentionally left out pear... I only want the values in the array...
);
Run Code Online (Sandbox Code Playgroud)
但是,我正在努力获得一个循环工作,可以通过并添加一个值,相应的键等于数组中每个项目的值.
foreach $fruit (@array) {
if ($_ #is equal to a key in the hash) {
#Add one to the corresponding value
}
}
Run Code Online (Sandbox Code Playgroud)
这有几个基本功能全部包含在一起,所以代表所有刚开始的Perl程序员,提前谢谢!
所有你需要的是
my @array = qw/banana apple orange apple orange apple pear/;
my %counts;
++$counts{$_} for @array;
Run Code Online (Sandbox Code Playgroud)
这导致像哈希一样
my %counts = ( apple => 3, banana => 1, orange => 2, pear => 1 )
Run Code Online (Sandbox Code Playgroud)
该for
循环可以用块和一个明确的循环计数变量被写,如果你愿意的话,像这样
for my $word (@array) {
++$counts{$word};
}
Run Code Online (Sandbox Code Playgroud)
具有完全相同的效果.