in reply to Reading serial port byte by byte...

What problems are you having with Device::SerialPort? This example code from the 'Tied Filehandles' section of the manual looks like what you describe - tie the serial port then use getc.
$PortObj = tie (*FH, 'Device::SerialPort',$Config_File) || die "Can't +tie: $!\n"; $char = getc FH;
Hope this helps.