This is a pet peeve of mine. I really, really dislike it when people use decrement or increment on $|. If $| is already zero then decrementing it doesn't cause it to remain false, it becomes true. Ugh! I think that by using increment on $| you imply that decrement would also be sane. It isn't and the only sane way to cause $| to be false is through an assignment. Arithmetic on $| is hooey.
Added note: you're supposed to say $| = 1 and $| = 0. At least then you know what the value of $| will be.
$ perl -le 'for(0..4){print $|--}'
0
1
0
1
0
$ perl -le 'for(0..4){print $|++}'
0
1
1
1
1