That's very odd. I've been using Perl on Windows, and ^Z has never interrupted reading, even without binmode.
Without binmode, the following outputs 10 ("foo\n\cZ\nbar\n"), and 13 with ("foo\r\n\cZ\r\nbar\r\n").
$x = <DATA>;
print(length($x), "\n"); # 10, 13 with binmode
<Character 1A here>
I use ActivePerl. How did you build your Perl? If binmode doesn't solve your problem, you have a broken perl. I'd be interested in seeing the output of perl -V. (That's an uppercase "V".)