in reply to backwards if and while looping

while ($a < $b) if not $error { $a++; }
is the same as
while ($a < $b) if not $error{ $a++; }
so the parser thinks you are asking for %error with key "$a++;".

Why not:

(not $error) and $a = $b;