print $1,"\n" while $text =~ /([^\n]{0,$max_line_size}})\n?/g; #### while ($sel->can_read) { sysread($fh, $buffer, 2048, length($buffer)); next unless $buffer =~ /^(EOT|DONE)$/m; ....(process $buffer) }