in reply to Re^2: ||= oddity
in thread ||= oddity

... because it's been designed and implemented to operate the way it does — that's all :)

I think the crucial difference is that the normal assignment operator (=) does not force scalar context upon its LHS (so the array remains an array, not the number of its elements), while ||= does.  It's not so much an issue of not being able to assign a scalar to an array, but rather the problem of the array no longer being (treated like) an array internally...