That's because it's not your process that is buffering it. It's prove. I suspect it is reading line-by-line to be able to intersperse its own output without having stuff appear in funny places. But that means that because your "Enter" line doesn't have a line ending, prove thinks there is still more coming, and won't know you're done until it hits the \n, as there may be an ok(...) in there somewhere, and it needs to print that out properly should it happen.
That being said, I'm not sure why anything you expect to run under prove would be printing out partial lines or reading from STDIN. Both of those seem to be odd things to put in tests.