The automatic seek is there, it is just that the seek and subsequent write are not done as an atomic operation so there is a race condition. Looking at the source code, I see that the translation of "\n" to "\r\n" is done between the seek and the write, so the race condition will probably be noticeably worse if you didn't use binmode.