First of all .. is a range operator in a list context. In a list context, it returns a list of values starting at the left and counting up to the right. (Okay, for alpha it's not really "counting"...)
In a scalar context it's a flip flop operator as you described.
And for() gives a list context.
You might want to pop back to perlop and re-read how it acts differently in different contexts.