perl - 嵌套循环 - 为什么循环包含先前的计算?

标签 perl nested-loops repeat

我的目的是计算列表 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/

相关文章:

java - 尝试仅使用嵌套的 for 循环(Java)打印一个边上有线条的递增数字金字塔

pandas - 如何在 Pandas 中重复 DatetimeIndex

mysql - 循环 mysql 选择查询时的联合结果

linux - Perl 加密 STDIN 密码

perl IO::Socket::SSL SSL 连接尝试失败

ruby - 是否有类似 Perl 的 LWP for Ruby 的模块?

python - 如何加速python循环

java - 在 Java 中打印左三角形 - 程序可以运行,但为什么呢?

python - (Python) 直到 a == b

*ptr++ 的 C 到 Perl 转换