That seems very odd to me. Why is your script coughing on C-X characters? Mine don't, and I don't think C-X is understood as a special character on Unix. If you using a strange OS that does so, you may want to binmode the filehandle before reading from it. The other case I can think of is if your data is coming down a serial port with Xon/Xoff enabled; in which case the problem is not with your script, but the port's configuration. As I haven't done any serial port work I'm not sure what you'd do to change the configuration to suit your needs, but maybe with this pointer you will be able to look in the right place.
If it's something completely different, then please do tell us on what system you're doing this and where your data is coming from.
Makeshifts last the longest.