http://www.perlmonks.org?node_id=929374

mlibhart has asked for the wisdom of the Perl Monks concerning the following question:

I've got a weird problem I just can't lick, but I'm sure it's something dumb I'm just not thinking of. I have a device hooked to my USB which is emulating a serial port, so I've got /dev/ttyUSB0. I need to send that device a couple characters, and then the device replies with a line. If I open the /dev/ttyUSB0 for update, write my characters, then do a

$response=<DEVICE>;

where DEVICE is my file handle, I get no response from the device. I have made the file handle nonbuffered with select. This read blocks, which is fine, that's what it should do. If, from another session, I then simply echo my characters to >/dev/ttyUSB0, my blocked read gets the response line. If I split the write/read into two different perl scripts and call the read script, then call the write, that works as well. So basically what seems to be happening is that unless I'm reading the port at the time of the write, I miss the response and it's tossed out. Can anyone offer any advice? I've tried Device::SerialPort and really don't like it. It seems to foobar my port to the point where I have to unplug/replug the device (it's not a modem anyway). Thanks Monks.