in reply to Win32::SerialPort code hanging while reading a 'line'

Do you use the XS version of Win32::SerialPort?

From the doc:

Buffers The size of the Win32 buffers are selectable with buffers. But each read method currently uses a fixed internal buffer of 4096 bytes. This can be changed in the Win32API::CommPort source and read with internal_buffer. The XS version will support dynamic buffer sizing. Large operations are automatically converted to multiple smaller ones by the tied FileHandle methods.

Another idea :
Maybe do you need to purge the buffer sometimes?
$PortObj->lookclear; # empty buffers

See Methods used with Tied FileHandles ,

hth,
PooLpi

'Ebry haffa hoe hab im tik a bush'. Jamaican proverb