perl - Different result in forloop? -
i want print this
xxx xxxxx xxxxxxx xxxxxxxxx xxxxxxxxxxx
i achive following code
$s = "x"; $z = 5; $m = 1; $m = $m+2, $z--, $c = " " x $z, $st = $s x $m, print "$c$st\n", for(1..5);
my doubt
when used increment , decrement operator after print function gave different result script is
$c = " " x $z, $st = $s x $m, print "$c$st\n", $m = $m+2, $z--, for(1..5);
it result is
x 35 xxx 54 xxxxx 73 xxxxxxx 92 xxxxxxxxx
here 3 5 7 9 printed $m
, 5 4 3 2
printed $z
. but, not directly print $m
, $z
why gave $m
, $z
value? how work?
the code
$c = " " x $z, $st = $s x $m, print "$c$st\n", $m = $m+2, $z--, for(1..5);
is parsed as:
$c = " " x $z, $st = $s x $m, print ("$c$st\n", $m = $m+2, $z--), for(1..5);
you can force different parsing using parentheses:
$c = " " x $z, $st = $s x $m, print ("$c$st\n"), $m = $m+2, $z-- for(1..5);
but rather suggest following:
for(1..5) { $c = " " x $z; $st = $s x $m; print ("$c$st\n"); $m = $m+2; $z--; }
that way not relying on operator precedence might bite you. see statements contained in loop too. (i had read initial code thrice it)
Comments
Post a Comment