我的目的是计算列表 2 中包含列表 1 中每个字母的单词数。 当我运行代码时,第一次计数很好;然而,后续的计数将添加到前面的计数中,这样最终的计数是所有计数的总和,而不是像我希望的那样是有多少“单词”包含“F”的计数。 我哪里做错了?
这是我的代码。
use warnings; use strict;
my $count=0;
my @list1 = ("A", "B", "C", "D", "E", "F");
my @list2 = ("AXE", "DOG", "CAT", "FOOD", "TRANCE");
for (my $i=0; $i<scalar(@list1); $i++){
for (my $j=0; $j<scalar(@list2); $j++){
my $word = $list2[$j];
my $letter = $list1[$i];
if ($word =~ /$letter/){
$count++;
}
}
print "$count \n";
}
感谢所有帮助。
最佳答案
如果我正确理解您的规范,您只需将计数声明/初始化移至外部 for
循环即可:
for ( my $i = 0 ; $i < scalar(@list1) ; $i++ ) {
my $count = 0;
这会重置每个字母的计数。
关于perl - 嵌套循环 - 为什么循环包含先前的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20058638/