我想像这样打印
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);
我怀疑
当我在print函数之后使用递增和递减运算符时,它给出了不同的结果 脚本是
$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
值?它是如何工作的?
答案 0 :(得分:3)
代码
$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--;
}
这样你就不会依赖任何可能咬你的运算符优先级。您将立即看到循环中包含哪些语句。 (我必须阅读你的初始代码三次才能最终得到它)