条件演算子 ?= を使おうとしていますが、場合により結果が異なるのはどうしてでしょうか?

my ($x, $y, @array);
for (0 .. 1) {
$array[$_] = $_;
$array[$_] ? ($x = 1) : ($x = 0);#期待通りの結果
$array[$_] ? $y = 1 : $y = 0; #期待と異なる結果
print "array = $array[$_], x = $x, y = $y\n";
}

結果
array = 0, x = 0, y = 0
array = 1, x = 1, y = 0