... my $remainder = ''; while (1) { my $buf; my $n = $self->_get_socket()->read_entity_body($buf, 1024); $buf = $remainder . $buf; $remainder = ''; die "can't read response: $!" unless defined $n; last unless $n; if( $buf =~ s!([^\n]+\z)!! ) { $remainder = $1; }; push @response, split (/\n/, $buf); }