Actually no. That forces the OS to keep the disk head moving back and forth between source(*) and destination.
It doesn't "force", actually. But as I stated in my post, I have yet to see an OS that could handle such a simple single-threaded situation intelligently enough. (That is, delay writing until file is closed or otherwise absolutely necessary.)
BTW, there is something odd with your numbers. The Perl timestamps only give a delta of slightly less than six seconds (~83 MB/s average => reading 228 MB/s, writing 152 MB/s), but your console says almost 22 seconds (which would put the performance at around 23 MB/s)