if ( $SSL_ERROR == SSL_WANT_READ) { select($rbits,undef,undef,...); sysread... } elsif ( $SSL_ERROR == SSL_WANT_WRITE) { select(undef,$wbits,undef,...); sysread... # YES, sysread! }