Interesting that it dies under Linux with empty $!
I've no knowledge to address that.
The only possibility that springs to mind is that *nix sysread really objects to being used on a filehandle that has previously been used in "formatted IO" mode.
Ie. As the DATA pseudo-handle is actually the same handle used to read the source, which presumably reads it using formatted IO, trying to read it with low-level IO sysread() causes it to throw its hands up in disgust :)
even if I replace CRLF with LF.
sysread should be completely oblivious to CRLF/LF -- even if I was asking it to read one or more -- but I'm asking it to read 80 characters only, so there are no newlines (of any flavour) being read.
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.