If you open the "file" that way, you must read only multiples of a blocksize (in my experience, 512 bytes for anything except 2048 for a CD). The <FILE> is not going to do that. Perhaps read or sysread? I'd go with a Win32::API import of ReadFile and not try to map the OS handle to Perl's system.