sub READLINEX { my $self= shift; my $svBuf= \$self->{BUFFER}; my $delim= $self->{INPUT_REGEX}; my $len= $self->{READLEN} || 4096; my $margin= $self->{READMARGIN} || 128; while( $$svBuf !~ /$delim/ || length($$svBuf)-$margin < $+[0] ) { $pos= length($$svBuf); $self->READ( $$svBuf, $pos, $len ) or last; } $pos= $$svBuf =~ /$delim/ ? $+[0] : length($$svBuf); return substr( $$svBuf, 0, $pos, "" ); }