my $place = 0; my ($buffer, $line) = (undef, undef); while (sysread INPUT, $buffer, 1, $place) { $place++; if ( $buffer=~ m{;|/} ) { my_process_line($line); $line = undef; } else { $line .= $buffer; } }