Perl forloop中的不同结果?
我想这样印刷Perl forloop中的不同结果?,perl,Perl,我想这样印刷 xxx xxxxx xxxxxxx xxxxxxxxx xxxxxxxxxxx 我通过以下代码实现了这一点 $s = "x"; $z = 5; $m = 1; $m = $m+2, $z--, $c = " " x $z, $st = $s x $m, print "$c$st\n", for(1..5); 我的怀疑 当我在打印函数后使用递增和递减运算符时,它给出了不同的结果 剧本是 $c = " " x $z, $st = $s x $m, print
xxx
xxxxx
xxxxxxx
xxxxxxxxx
xxxxxxxxxxx
我通过以下代码实现了这一点
$s = "x";
$z = 5;
$m = 1;
$m = $m+2,
$z--,
$c = " " x $z,
$st = $s x $m,
print "$c$st\n",
for(1..5);
我的怀疑
当我在打印函数后使用递增和递减运算符时,它给出了不同的结果
剧本是
$c = " " x $z,
$st = $s x $m,
print "$c$st\n",
$m = $m+2,
$z--,
for(1..5);
结果是
x
35 xxx
54 xxxxx
73 xxxxxxx
92 xxxxxxxxx
这里3 5 7 9由$m
打印,5 4 3 2
由$z
打印。
但是,我没有直接打印$m
和$z
,那么为什么它会给出$m
和$z
值呢?它是如何工作的?代码
$c = " " x $z,
$st = $s x $m,
print "$c$st\n",
$m = $m+2,
$z--,
for(1..5);
解析为:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n", $m = $m+2, $z--),
for(1..5);
可以使用括号强制进行不同的分析:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n"),
$m = $m+2,
$z--
for(1..5);
但我建议如下:
for(1..5) {
$c = " " x $z;
$st = $s x $m;
print ("$c$st\n");
$m = $m+2;
$z--;
}
这样,您就不会依赖任何可能对您不利的运算符优先级。您将立即看到哪些语句也包含在循环中。(我不得不把你最初的代码读了三遍才最终得到它)代码
$c = " " x $z,
$st = $s x $m,
print "$c$st\n",
$m = $m+2,
$z--,
for(1..5);
解析为:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n", $m = $m+2, $z--),
for(1..5);
可以使用括号强制进行不同的分析:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n"),
$m = $m+2,
$z--
for(1..5);
但我建议如下:
for(1..5) {
$c = " " x $z;
$st = $s x $m;
print ("$c$st\n");
$m = $m+2;
$z--;
}
这样,您就不会依赖任何可能对您不利的运算符优先级。您将立即看到哪些语句也包含在循环中。(我不得不把你最初的代码读了三遍才最终得到它)代码
$c = " " x $z,
$st = $s x $m,
print "$c$st\n",
$m = $m+2,
$z--,
for(1..5);
解析为:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n", $m = $m+2, $z--),
for(1..5);
可以使用括号强制进行不同的分析:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n"),
$m = $m+2,
$z--
for(1..5);
但我建议如下:
for(1..5) {
$c = " " x $z;
$st = $s x $m;
print ("$c$st\n");
$m = $m+2;
$z--;
}
这样,您就不会依赖任何可能对您不利的运算符优先级。您将立即看到哪些语句也包含在循环中。(我不得不把你最初的代码读了三遍才最终得到它)代码
$c = " " x $z,
$st = $s x $m,
print "$c$st\n",
$m = $m+2,
$z--,
for(1..5);
解析为:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n", $m = $m+2, $z--),
for(1..5);
可以使用括号强制进行不同的分析:
$c = " " x $z,
$st = $s x $m,
print ("$c$st\n"),
$m = $m+2,
$z--
for(1..5);
但我建议如下:
for(1..5) {
$c = " " x $z;
$st = $s x $m;
print ("$c$st\n");
$m = $m+2;
$z--;
}
这样,您就不会依赖任何可能对您不利的运算符优先级。您将立即看到哪些语句也包含在循环中。(我不得不把你最初的代码读了三遍才最终明白)始终
严格使用;使用警告代码>在脚本的开头。始终使用strict;使用警告代码>在脚本的开头。始终使用strict;使用警告代码>在脚本的开头。始终使用strict;使用警告代码>在脚本的开头。