Perl - 循环变量问题

Perl - Trouble With Loop Variables

我对 Perl 编码还很陌生,习惯使用 C 风格的 for 循环。我不确定为什么以下程序永远不会为 $l:

打印值 4
use strict;
use warnings;

my $minL = 4;

for (my $l = $minL; $l > 0; $l--) {
    for (my $i = 0; $i + $l < $minL; $i++) {
        print "$i $l\n";
    }
}

非常感谢。

您的内部 for 循环具有条件 $i + $l < $minL。如果 $l == $minL,那么即使 $i 为 0,$i + $l < $minL 也将为假,因此循环运行 0 次并且从不打印任何内容。

也许您想使用 <= 作为条件?

顺便说一下,下面是如何使用 Perl 风格的 foreach 循环编写相同的东西(假设 <= 条件):

my $minL = 4;
for my $l (reverse 1 .. $minL) {
    for my $i (0 .. $minL - $l) {
        print "$i $l\n";
    }
}

在第一次迭代中:

for (my $l = $minL; $l > 0; $l--) {

$l == $minL

    for (my $i = 0; $i + $l < $minL; $i++) {

所以这个块不会 运行 直到 $l 递减:

        print "$i $l\n";
    }

将您的内部循环更改为:

    for (my $i = 0; $i + $l <= $minL; $i++) {