Perl 如何使for循环每次增加1

Perl 如何使for循环每次增加1,perl,for-loop,Perl,For Loop,我有一个Perl循环 my $i = 0; for ($i = 4, $i < 11, $i++) { print "$i\n"; } my$i=0; 对于($i=4,$i

我有一个Perl循环

my $i = 0;
    for ($i = 4, $i < 11, $i++) {
        print "$i\n";
    }
my$i=0;
对于($i=4,$i<11,$i++){
打印“$i\n”;
}
我不知道为什么,但是我没有打印出来 4. 5. 6. 7. 8. 9 10
在我的控制台的单独行中,它只打印出5,然后终止

Perl使用分号来分隔for循环的参数

试试这个:

my $i = 0;
for ($i = 4; $i < 11; $i++) {
    print "$i\n";
}
my$i=0;
对于($i=4;$i<11;$i++){
打印“$i\n”;
}

Perl使用分号来分隔for循环的参数

试试这个:

my $i = 0;
for ($i = 4; $i < 11; $i++) {
    print "$i\n";
}
my$i=0;
对于($i=4;$i<11;$i++){
打印“$i\n”;
}

Perl有两种类型的
用于
循环,即(
用于(INIT;COND;STEP)
)和(
用于VAR(LIST)

您试图使用第一个表单,但您的代码不包含
,因此Perl将其解析为第二种形式;i、 e.它试图迭代列表中的元素,
$i=4,$i<11,$i++
,其计算结果为
4,1,4
,并将
$i
设置为
5

详细说明:
$i=4
计算为
4
,并将
$i
设置为
4
,作为副作用
$i<11
$i
(当前为
4
)的值与
11
进行比较,后者的计算结果为
1
(true)
$i++
评估
$i
4
)的当前值,并作为副作用增加
$i
,将其设置为
5

您没有指定循环变量,因此Perl在默认情况下使用
$\uuu

但是,您的循环体根本不使用
$\ucode>,只在每次迭代中打印
$i
的最终值,即
5
。如果改用打印
$\uu
,您可以更好地看到正在发生的事情:

for ($i = 4, $i < 11, $i++) {
    print "$_\n";
}
要获得所需的结果,请为($i=4;$i<11;$i++)编写
或完全转换为列表迭代变量:

for my $i (4 .. 10) {
    print "$i\n";
}

Perl有两种类型的
for
循环,(
for(INIT;COND;STEP)
)和(
for VAR(LIST)

您试图使用第一个表单,但您的代码不包含
,因此Perl将其解析为第二种形式;i、 e.它试图迭代列表中的元素,
$i=4,$i<11,$i++
,其计算结果为
4,1,4
,并将
$i
设置为
5

详细说明:
$i=4
计算为
4
,并将
$i
设置为
4
,作为副作用
$i<11
$i
(当前为
4
)的值与
11
进行比较,后者的计算结果为
1
(true)
$i++
评估
$i
4
)的当前值,并作为副作用增加
$i
,将其设置为
5

您没有指定循环变量,因此Perl在默认情况下使用
$\uuu

但是,您的循环体根本不使用
$\ucode>,只在每次迭代中打印
$i
的最终值,即
5
。如果改用打印
$\uu
,您可以更好地看到正在发生的事情:

for ($i = 4, $i < 11, $i++) {
    print "$_\n";
}
要获得所需的结果,请为($i=4;$i<11;$i++)编写
或完全转换为列表迭代变量:

for my $i (4 .. 10) {
    print "$i\n";
}

使用
而不是
使用
而不是
通常我们不回答打字错误问题。改为发表评论,并投票赞成因打字错误而结束。@ThomasWeller收到了,谢谢提醒。通常我们不会回答打字错误问题。改为发表评论并投票结束,因为有一个打字错误。@ThomasWeller得到了,谢谢你的提醒。这可能对OP来说太多细节了,这埋下了lede:
对于我的$i(4..10){}
更简单更干净。对于OP来说,这可能太多细节了,它埋下了lede:
对于我的$i(4..10){}
更简单、更干净。