my $buff; my $data; while (1) { if (read(MUFFINLOG, $buf, 1024)) { $data .= $buf; while ($data =~ /\n/) { my $line; ($line, $data) = split /\n/, $data, 2; # process the line of data that is in $line } } }