my $rv = sysread(FIFO, $fifodata, 64*1024, length($fifodata));
####
my $rv = sysread(FIFO, $fifodata, 64*1024, length($fifodata));
if (!defined($rv)) {
... handle error ...
}
if (!$rv) {
... handle eof. There might be a partial message in $fifodata ...
}
while (...$fifodata contains a complete message...) {
...extract message from $fifodata...
...process message...
}
####
while (length($fifodata) > $MSG_SIZE) {
my $msg = substr($fifodata, 0, $MSG_SIZE, '');
process_msg($msg);
}
####
while ($fifodata =~ s/^([^\n]*\n)//) {
my $msg = $1;
process_msg($msg);
}